<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>끄적끄적 개발기록</title>
    <link>https://seoneu.tistory.com/</link>
    <description>남 주기 위해 공부하는 개발자 겸 서포터, 워누입니다 
프로그래밍 이외에도 음악, 독서, 운동 등 다양한 취미를 갖고 있습니다:)</description>
    <language>ko</language>
    <pubDate>Mon, 10 Aug 2026 19:53:26 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>워누</managingEditor>
    <image>
      <title>끄적끄적 개발기록</title>
      <url>https://tistory1.daumcdn.net/tistory/2830930/attach/34d7b8bc657741e2ac335f142c2ffd09</url>
      <link>https://seoneu.tistory.com</link>
    </image>
    <item>
      <title>[JAVA/Spring Boot] STS4_JAVA 11 설정 오류</title>
      <link>https://seoneu.tistory.com/52</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요 워누입니다 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 포스팅은 STS에서 새 프로젝트 생성 시 JAVA 11을 고를 수 없었던&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이상한 오류가 발생되어 기록을 남겨보고자 합니다 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 오류 화면은 다음과 같습니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;978&quot; data-origin-height=&quot;1047&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dmgzo5/btsBreu4a3j/25JJCIY2mmq95vnWe9ak0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dmgzo5/btsBreu4a3j/25JJCIY2mmq95vnWe9ak0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dmgzo5/btsBreu4a3j/25JJCIY2mmq95vnWe9ak0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdmgzo5%2FbtsBreu4a3j%2F25JJCIY2mmq95vnWe9ak0K%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;727&quot; height=&quot;778&quot; data-origin-width=&quot;978&quot; data-origin-height=&quot;1047&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;새로운 프로젝트 하나를 따기 위해서 &quot;Spring Starter Project&quot;를 클릭했으나..&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;730&quot; data-origin-height=&quot;964&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cEXHmY/btsBupbxJtq/OdUHz9ilQa4ipttGuA5cCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cEXHmY/btsBupbxJtq/OdUHz9ilQa4ipttGuA5cCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cEXHmY/btsBupbxJtq/OdUHz9ilQa4ipttGuA5cCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcEXHmY%2FbtsBupbxJtq%2FOdUHz9ilQa4ipttGuA5cCk%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;491&quot; height=&quot;648&quot; data-origin-width=&quot;730&quot; data-origin-height=&quot;964&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;Java Version 선택 옵션이 17과 21만 존재하더군요.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본 옵션은 아래 링크에서 작성한 것처럼 제대로 세팅되어 있는 상황이었구요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://seoneu.tistory.com/51&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://seoneu.tistory.com/51&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1701778091179&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[JAVA/Spring Boot] STS4 기본 설정 및 첫 프로젝트 띄우기&quot; data-og-description=&quot;안녕하세요 워누입니다! 지난 포스팅에 이어 이번에는 STS4 기본 설정 후 첫 프로젝트를 띄워보고자 합니다. 우선 STS4를 실행해주세요! 첫번째로 세팅할 것은 JRE 설정입니다! 이제 상단 매뉴에서 &quot; data-og-host=&quot;seoneu.tistory.com&quot; data-og-source-url=&quot;https://seoneu.tistory.com/51&quot; data-og-url=&quot;https://seoneu.tistory.com/51&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/buhIZn/hyUFat6xGv/tfUNXv9gxF5rbdUzxIkMpK/img.png?width=800&amp;amp;height=606&amp;amp;face=0_0_800_606,https://scrap.kakaocdn.net/dn/jpR5m/hyUFcZJ0Hk/rMXwRZbLDFAMKA1VkKkg2k/img.png?width=800&amp;amp;height=606&amp;amp;face=0_0_800_606,https://scrap.kakaocdn.net/dn/dhpOPs/hyUE6ZxynE/gMQEvOaYpP7vhPXyo5qiFk/img.png?width=701&amp;amp;height=740&amp;amp;face=0_0_701_740&quot;&gt;&lt;a href=&quot;https://seoneu.tistory.com/51&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://seoneu.tistory.com/51&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/buhIZn/hyUFat6xGv/tfUNXv9gxF5rbdUzxIkMpK/img.png?width=800&amp;amp;height=606&amp;amp;face=0_0_800_606,https://scrap.kakaocdn.net/dn/jpR5m/hyUFcZJ0Hk/rMXwRZbLDFAMKA1VkKkg2k/img.png?width=800&amp;amp;height=606&amp;amp;face=0_0_800_606,https://scrap.kakaocdn.net/dn/dhpOPs/hyUE6ZxynE/gMQEvOaYpP7vhPXyo5qiFk/img.png?width=701&amp;amp;height=740&amp;amp;face=0_0_701_740');&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;[JAVA/Spring Boot] STS4 기본 설정 및 첫 프로젝트 띄우기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요 워누입니다! 지난 포스팅에 이어 이번에는 STS4 기본 설정 후 첫 프로젝트를 띄워보고자 합니다. 우선 STS4를 실행해주세요! 첫번째로 세팅할 것은 JRE 설정입니다! 이제 상단 매뉴에서&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;seoneu.tistory.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;p data-ke-size=&quot;size16&quot;&gt;STS를 밀고 다시 설치해보아도, Java 환경변수를 다시 설정해주어도 동일하게 11버전은 안되더라구요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(17/21은 잘만 선택되는데 말이죠)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구글에 검색해도 해당 이슈에 대한 현상이 나오지 않아 여러모로 불편하던 중&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Spring 공식 사이트에서 2.7.x 버전의 지원 종료에 대한 내용을 볼 수 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(&lt;a href=&quot;https://spring.io/projects/spring-boot#support&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://spring.io/projects/spring-boot#support&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1487&quot; data-origin-height=&quot;972&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6CZ7l/btsBugNA4OP/KKOYCB5Nymi9aFaJikphlK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6CZ7l/btsBugNA4OP/KKOYCB5Nymi9aFaJikphlK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6CZ7l/btsBugNA4OP/KKOYCB5Nymi9aFaJikphlK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6CZ7l%2FbtsBugNA4OP%2FKKOYCB5Nymi9aFaJikphlK%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;1487&quot; height=&quot;972&quot; data-origin-width=&quot;1487&quot; data-origin-height=&quot;972&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;이것 때문인지 아닌지는 모르겠지만 여튼 저는 STS에서 11버전을 사용할 수 없는 상태입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 boot 3.x 버전을 공부해보기 위해서라도 17 이상을 설치해보긴 하겠지만&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러모로 레거시에 대한 서비스 종료가 너무 빠르게 진행된다는 건 아쉽긴 하네요ㅜㅜ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혹시 저와 같은 문제를 겪고 계시거나 문제를 해결하신 분이 있다면 댓글로 달아주시면 감사하겠습니다 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(&lt;s&gt;저는 결국 해결 못하고 맥에 설치한 인텔리제이로 프로젝트를 진행해보겠습니다...&lt;/s&gt; )&lt;/p&gt;</description>
      <category>Java 공부하기/Spring Boot</category>
      <category>java</category>
      <category>spring</category>
      <category>STS</category>
      <category>개발</category>
      <category>스프링</category>
      <category>자바</category>
      <category>프로그래밍</category>
      <author>워누</author>
      <guid isPermaLink="true">https://seoneu.tistory.com/52</guid>
      <comments>https://seoneu.tistory.com/52#entry52comment</comments>
      <pubDate>Wed, 6 Dec 2023 23:14:18 +0900</pubDate>
    </item>
    <item>
      <title>[JAVA/Spring Boot] STS4 기본 설정 및 첫 프로젝트 띄우기</title>
      <link>https://seoneu.tistory.com/51</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요 워누입니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지난 포스팅에 이어 이번에는 STS4 기본 설정 후 첫 프로젝트를 띄워보고자 합니다.&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;우선 STS4를 실행해주세요!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1008&quot; data-origin-height=&quot;764&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxfYxQ/btsdhBtXHBy/oNwivKV4kPJRW9zRKrVUMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxfYxQ/btsdhBtXHBy/oNwivKV4kPJRW9zRKrVUMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxfYxQ/btsdhBtXHBy/oNwivKV4kPJRW9zRKrVUMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxfYxQ%2FbtsdhBtXHBy%2FoNwivKV4kPJRW9zRKrVUMk%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;1008&quot; height=&quot;764&quot; data-origin-width=&quot;1008&quot; data-origin-height=&quot;764&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫번째로 세팅할 것은 JRE 설정입니다!&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 상단 매뉴에서 [Windows &amp;gt; Reference] 를 클릭해주세요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;701&quot; data-origin-height=&quot;740&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bA1FCB/btsdemqA7X2/dLp3c5E2qsh8mWwkvKUS1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bA1FCB/btsdemqA7X2/dLp3c5E2qsh8mWwkvKUS1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bA1FCB/btsdemqA7X2/dLp3c5E2qsh8mWwkvKUS1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbA1FCB%2FbtsdemqA7X2%2FdLp3c5E2qsh8mWwkvKUS1k%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;701&quot; height=&quot;740&quot; data-origin-width=&quot;701&quot; data-origin-height=&quot;740&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;Preference 창에서 [JAVA &amp;gt; Installed JREs] 매뉴로 접속해보면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같이 STS에 이미 설치된 JRE가 있다는 것을 알 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇지만 저는 이전 포스팅에서 JDK를 설치했었기 때문에 설치한 JDK로 세팅을 바꾸도록 하겠습니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오른쪽 위 [Add...] 버튼을 클릭해봅시다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;446&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btzjfD/btsdlr5KeEH/1LekLYlHKcywK3aBZuNJC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btzjfD/btsdlr5KeEH/1LekLYlHKcywK3aBZuNJC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btzjfD/btsdlr5KeEH/1LekLYlHKcywK3aBZuNJC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtzjfD%2Fbtsdlr5KeEH%2F1LekLYlHKcywK3aBZuNJC1%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;508&quot; height=&quot;446&quot; data-origin-width=&quot;508&quot; data-origin-height=&quot;446&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 [Standard VM]을 선택하고 [Next &amp;gt;] 버튼을 클릭해주세요!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;511&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOm3kM/btsdzgWkPLa/RNYIHHZBLC4vJ5B1FDiiI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOm3kM/btsdzgWkPLa/RNYIHHZBLC4vJ5B1FDiiI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOm3kM/btsdzgWkPLa/RNYIHHZBLC4vJ5B1FDiiI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOm3kM%2FbtsdzgWkPLa%2FRNYIHHZBLC4vJ5B1FDiiI1%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;511&quot; height=&quot;512&quot; data-origin-width=&quot;511&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 [Directory]를 클릭한 후 JDK가 설치된 경로의 폴더를 선택해주세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 아래와 같이 나올 것입니다!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;510&quot; data-origin-height=&quot;510&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/r7nGi/btsdwt9uuzc/PPLOVhUaiuQbwMKb9MW1j1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/r7nGi/btsdwt9uuzc/PPLOVhUaiuQbwMKb9MW1j1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/r7nGi/btsdwt9uuzc/PPLOVhUaiuQbwMKb9MW1j1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fr7nGi%2Fbtsdwt9uuzc%2FPPLOVhUaiuQbwMKb9MW1j1%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;510&quot; height=&quot;510&quot; data-origin-width=&quot;510&quot; data-origin-height=&quot;510&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 [Finish] 버튼을 클릭해서 완료해주세요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 아래와 같이 [Preferernce] 화면으로 돌아오면서 위에서 세팅한 JDK가 함께 추가된 것을 볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;695&quot; data-origin-height=&quot;740&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kZuoD/btsdelFpp5o/Wm090AyxUP2D2b5Ku7S6y1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kZuoD/btsdelFpp5o/Wm090AyxUP2D2b5Ku7S6y1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kZuoD/btsdelFpp5o/Wm090AyxUP2D2b5Ku7S6y1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkZuoD%2FbtsdelFpp5o%2FWm090AyxUP2D2b5Ku7S6y1%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;695&quot; height=&quot;740&quot; data-origin-width=&quot;695&quot; data-origin-height=&quot;740&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로 설치한 JDK 옆 체크박스를 클릭한 다음 [Apply] 버튼을 클릭해주세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 왼쪽 매뉴에서 [JAVA &amp;gt; Compiler]를 클릭해주세요!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;698&quot; data-origin-height=&quot;738&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCwhj2/btsdhAB3vwG/4tGXkKRxTa2kRhQxR6zYQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCwhj2/btsdhAB3vwG/4tGXkKRxTa2kRhQxR6zYQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCwhj2/btsdhAB3vwG/4tGXkKRxTa2kRhQxR6zYQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCwhj2%2FbtsdhAB3vwG%2F4tGXkKRxTa2kRhQxR6zYQ1%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;698&quot; height=&quot;738&quot; data-origin-width=&quot;698&quot; data-origin-height=&quot;738&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JDK Compliance level에서 자신이 설치한 JDK 버전과 맞는지 확인해서 수정해주세요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 11버전을 설치했기 때문에 11로 수정했습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버전 수정이 완료되었다면 [Apply] 버튼을 클릭해줍시다!&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;왼쪽 매뉴에서 [General &amp;gt; Content Types]를 클릭해줍시다.&amp;nbsp;&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;696&quot; data-origin-height=&quot;736&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpIvVB/btsdeHBxktX/gXy3YNL9HZI1Qyto2vKVDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpIvVB/btsdeHBxktX/gXy3YNL9HZI1Qyto2vKVDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpIvVB/btsdeHBxktX/gXy3YNL9HZI1Qyto2vKVDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpIvVB%2FbtsdeHBxktX%2FgXy3YNL9HZI1Qyto2vKVDk%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;696&quot; height=&quot;736&quot; data-origin-width=&quot;696&quot; data-origin-height=&quot;736&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;화면 내 Content types 항목 중 Text를 클릭하여 Default encoding이 어떻게 나오는지 확인해주세요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 아무것도 안 떠 있어서 아래와 같이 &quot;UTF-8&quot;을 입력해주었습니다.&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;694&quot; data-origin-height=&quot;739&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5OQBH/btsdwuHjEnJ/QBAT16TOwOzla66P0XVyMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5OQBH/btsdwuHjEnJ/QBAT16TOwOzla66P0XVyMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5OQBH/btsdwuHjEnJ/QBAT16TOwOzla66P0XVyMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5OQBH%2FbtsdwuHjEnJ%2FQBAT16TOwOzla66P0XVyMk%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;694&quot; height=&quot;739&quot; data-origin-width=&quot;694&quot; data-origin-height=&quot;739&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저처럼 입력을 직접 해주신 분이 계시다면 오른쪽 [Update] 버튼을 꼭 클릭해주세요!&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;[Text] 항목에서 &quot;UTF-8&quot; 적용을 완료했다 하더라도 하위 항목 중&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;저의 경우에는 [Java Properties File]과 [Spring Properties File]이 &quot;ISO-8859-1&quot;으로 세팅이 되어 있었습니다!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;735&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cnTuDQ/btsdBfv6ew4/THtFLZcZpu0zGYV1y6kDS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cnTuDQ/btsdBfv6ew4/THtFLZcZpu0zGYV1y6kDS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cnTuDQ/btsdBfv6ew4/THtFLZcZpu0zGYV1y6kDS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcnTuDQ%2FbtsdBfv6ew4%2FTHtFLZcZpu0zGYV1y6kDS0%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;692&quot; height=&quot;735&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;735&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 세팅되어 있는 경우도 있으니 꼭 찾아서 &quot;UTF-8&quot;로 설정을 변경하고 [Update]를 클릭해주세요.&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;다음은 [General &amp;gt; Workspace] 매뉴로 이동해봅시다!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;723&quot; data-origin-height=&quot;737&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7TGTB/btsdzg9SHqP/ywyRZ5v1smabj6MZQdOhok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7TGTB/btsdzg9SHqP/ywyRZ5v1smabj6MZQdOhok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7TGTB/btsdzg9SHqP/ywyRZ5v1smabj6MZQdOhok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7TGTB%2Fbtsdzg9SHqP%2FywyRZ5v1smabj6MZQdOhok%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;723&quot; height=&quot;737&quot; data-origin-width=&quot;723&quot; data-origin-height=&quot;737&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 이미 [Text file encoding] 항목에 &quot;Other: UTF-8&quot;이 잘 적용되어 있었습니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 다른 인코딩으로 세팅된 분이 있다면 여기도 &quot;UTF-8&quot;로 수정한 다음 [Apply] 버튼을 클릭해주세요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;인코딩 세팅을 마무리하고, 마지막으로 [Gradle] 매뉴로 이동해보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;722&quot; data-origin-height=&quot;735&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bY7F3H/btsdtGgT5wH/1DYUu24labvHcWZNn8ClS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bY7F3H/btsdtGgT5wH/1DYUu24labvHcWZNn8ClS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bY7F3H/btsdtGgT5wH/1DYUu24labvHcWZNn8ClS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbY7F3H%2FbtsdtGgT5wH%2F1DYUu24labvHcWZNn8ClS0%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;722&quot; height=&quot;735&quot; data-origin-width=&quot;722&quot; data-origin-height=&quot;735&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[Java home] 항목에 [Browse] 버튼을 클릭하여 JDK가 설치된 경로를 입력합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 위와 같이 [Authmatic Project Synchronization] 항목에 체크가 되어 있지 않다면 체크박스 버튼을 클릭해주세요!&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;723&quot; data-origin-height=&quot;734&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Wmn8Q/btsdo9X3UMg/vcFKGHPHCOuNGMeCQMF46K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Wmn8Q/btsdo9X3UMg/vcFKGHPHCOuNGMeCQMF46K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Wmn8Q/btsdo9X3UMg/vcFKGHPHCOuNGMeCQMF46K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWmn8Q%2Fbtsdo9X3UMg%2FvcFKGHPHCOuNGMeCQMF46K%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;723&quot; height=&quot;734&quot; data-origin-width=&quot;723&quot; data-origin-height=&quot;734&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;이제 [Apply] 버튼을 클릭한 후 [Apply and Close] 버튼을 클릭해서 [Preference] 화면을 종료해주세요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1008&quot; data-origin-height=&quot;764&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxfYxQ/btsdhBtXHBy/oNwivKV4kPJRW9zRKrVUMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxfYxQ/btsdhBtXHBy/oNwivKV4kPJRW9zRKrVUMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxfYxQ/btsdhBtXHBy/oNwivKV4kPJRW9zRKrVUMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxfYxQ%2FbtsdhBtXHBy%2FoNwivKV4kPJRW9zRKrVUMk%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;1008&quot; height=&quot;764&quot; data-origin-width=&quot;1008&quot; data-origin-height=&quot;764&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 처음화면으로 돌아왔네요 ㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제&amp;nbsp; [Project Explorer]에서 [Create new Spring Starter Project]를 클릭해줍시다!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;726&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biKPMy/btsdIHfnVR0/qeBKy7ZDUe9CBKQO9194xk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biKPMy/btsdIHfnVR0/qeBKy7ZDUe9CBKQO9194xk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biKPMy/btsdIHfnVR0/qeBKy7ZDUe9CBKQO9194xk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiKPMy%2FbtsdIHfnVR0%2FqeBKy7ZDUe9CBKQO9194xk%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;548&quot; height=&quot;726&quot; data-origin-width=&quot;548&quot; data-origin-height=&quot;726&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 [Type]을 &quot;Gradle - Groovy&quot;로, [Java Version]을 &quot;11&quot;로, Name은 &quot;Sample&quot;, Package 명은 &quot;sample&quot;로 했습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글을 보고 세팅하시는 분들은 PC 환경에 맞게 세팅을 수정해주시고 [Next &amp;gt;] 버튼을 클릭해주세요!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;549&quot; data-origin-height=&quot;726&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDAEF2/btsdIrp3Hvo/cYq0m4PNssw41vd9ELhyFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDAEF2/btsdIrp3Hvo/cYq0m4PNssw41vd9ELhyFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDAEF2/btsdIrp3Hvo/cYq0m4PNssw41vd9ELhyFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDAEF2%2FbtsdIrp3Hvo%2FcYq0m4PNssw41vd9ELhyFk%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;549&quot; height=&quot;726&quot; data-origin-width=&quot;549&quot; data-origin-height=&quot;726&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서는 스프링 부트 버전 및 의존성을 설정할 수 있어요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금은 간단한 웹 프로젝트를 실행할 예정이므로 아래 두 가지만 추가해줍시다 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[Developer Tools &amp;gt; Spring Boot DevTools]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[Web &amp;gt; Spring Web]&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;다른 의존성에 대한 도구들은 나중에 알아가보도록 하고 우선 [Next] 버튼을 클릭해줍시다!&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;546&quot; data-origin-height=&quot;726&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dLkN7U/btsdIrp3JAm/EnUZ9H27sx6JBfbE0jJjZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dLkN7U/btsdIrp3JAm/EnUZ9H27sx6JBfbE0jJjZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dLkN7U/btsdIrp3JAm/EnUZ9H27sx6JBfbE0jJjZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdLkN7U%2FbtsdIrp3JAm%2FEnUZ9H27sx6JBfbE0jJjZ1%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;546&quot; height=&quot;726&quot; data-origin-width=&quot;546&quot; data-origin-height=&quot;726&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 화면에서는 Spring Boot의 구성 정보를 확인할 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아직 아무것도 모르므로 일단 [Finish] 버튼을 클릭해줍시다!&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;665&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqXTaO/btsdFfR1t8y/9zKvQ2tM6aSBGMoUEgku7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqXTaO/btsdFfR1t8y/9zKvQ2tM6aSBGMoUEgku7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqXTaO/btsdFfR1t8y/9zKvQ2tM6aSBGMoUEgku7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqXTaO%2FbtsdFfR1t8y%2F9zKvQ2tM6aSBGMoUEgku7K%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;1014&quot; height=&quot;665&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;665&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.....? 이 오류는 무엇인가...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오류 메세지:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;'Import Getting Started Content' has encountered a problem.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;NoMatchingConfigurationSelectionException&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 내용을 구글링해서 찾아보니&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Spring Boot 3.x 버전으로 사용하려면 JAVA 17 버전 이상으로 세팅이 되어야 한다는군요...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 다뤄보니 별 실수를 다하는군요.. &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러분은 저같은 실수 하지 마시고 Spring Boot 버전을 JAVA 버전에 맞게 사용하세요!!&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;(나중에는 JDK 17 버전 다시 설치하고 돌아오겠습니다ㅋㅋ)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;550&quot; data-origin-height=&quot;725&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eh3SIW/btsdFfR1xRE/jQM1MVuDLvZ1vcNBFho29k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eh3SIW/btsdFfR1xRE/jQM1MVuDLvZ1vcNBFho29k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eh3SIW/btsdFfR1xRE/jQM1MVuDLvZ1vcNBFho29k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Feh3SIW%2FbtsdFfR1xRE%2FjQM1MVuDLvZ1vcNBFho29k%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;550&quot; height=&quot;725&quot; data-origin-width=&quot;550&quot; data-origin-height=&quot;725&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음과 다르게 Spring Boot 버전을 2.7.11로 세팅하고 프로젝트를 생성했습니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;818&quot; data-origin-height=&quot;560&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sUqEb/btsdGldl3ed/Ihvshv8TjXo1IOUchaiSF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sUqEb/btsdGldl3ed/Ihvshv8TjXo1IOUchaiSF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sUqEb/btsdGldl3ed/Ihvshv8TjXo1IOUchaiSF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsUqEb%2FbtsdGldl3ed%2FIhvshv8TjXo1IOUchaiSF0%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;818&quot; height=&quot;560&quot; data-origin-width=&quot;818&quot; data-origin-height=&quot;560&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는 문제 없이 정상적으로 생성이 된 것 같군요..!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그렇다면 이제 실제로 Run을 시켜보도록 하겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트를 우클릭한 상태에서 [Run As &amp;gt; Spring Boot App] 을 클릭해주세요!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1317&quot; data-origin-height=&quot;382&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dOM8Qq/btsdKkxdekI/2QXDfXY9owfM47YKO3dOYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dOM8Qq/btsdKkxdekI/2QXDfXY9owfM47YKO3dOYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dOM8Qq/btsdKkxdekI/2QXDfXY9owfM47YKO3dOYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdOM8Qq%2FbtsdKkxdekI%2F2QXDfXY9owfM47YKO3dOYk%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;1317&quot; height=&quot;382&quot; data-origin-width=&quot;1317&quot; data-origin-height=&quot;382&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;이 중에서 5번째 줄을 살펴보자면,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;612&quot; data-origin-height=&quot;16&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oyRBz/btsdKrpzzQB/OueGAR23MlNddElj2G6w51/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oyRBz/btsdKrpzzQB/OueGAR23MlNddElj2G6w51/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oyRBz/btsdKrpzzQB/OueGAR23MlNddElj2G6w51/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoyRBz%2FbtsdKrpzzQB%2FOueGAR23MlNddElj2G6w51%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;612&quot; height=&quot;16&quot; data-origin-width=&quot;612&quot; data-origin-height=&quot;16&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;STS에 내장된 Tomcat 서버가 8080 포트로 구동되었다는 사실을 알 수가 있습니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 이제, Browser에 접속해서 결과를 볼까요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;브라우저를 하나 띄워주시고 &quot;localhost:8080&quot;을 입력해서 접속해주세요!&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;280&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6wk5v/btsdEDyNjPH/lXj3ontnRQRl95UtrgjSe0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6wk5v/btsdEDyNjPH/lXj3ontnRQRl95UtrgjSe0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6wk5v/btsdEDyNjPH/lXj3ontnRQRl95UtrgjSe0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6wk5v%2FbtsdEDyNjPH%2FlXj3ontnRQRl95UtrgjSe0%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;692&quot; height=&quot;280&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;280&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로그래밍의 첫 관문인 &quot;Hello World!&quot;를 띄워보면 조금이나마 감을 잡을 수 있을 것 같네요 ㅎㅎ&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;이번엔 sample package 밑에 Controller 패키지를 생성해봅시다!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;244&quot; data-origin-height=&quot;352&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WSQrw/btsdKlv74mM/xSDt35Rf7FI0n9UiFmQlN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WSQrw/btsdKlv74mM/xSDt35Rf7FI0n9UiFmQlN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WSQrw/btsdKlv74mM/xSDt35Rf7FI0n9UiFmQlN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWSQrw%2FbtsdKlv74mM%2FxSDt35Rf7FI0n9UiFmQlN1%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;244&quot; height=&quot;352&quot; data-origin-width=&quot;244&quot; data-origin-height=&quot;352&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 화면에서 sample 패키지를 우클릭 한 후 [New &amp;gt; Package]를 클릭합니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;화면을 띄웠다면 [Name]에 &quot;sample.controller&quot;를 입력해준 후 [Finish]&amp;nbsp; 버튼을 클릭합니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;501&quot; data-origin-height=&quot;486&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vD2VL/btsdG9XNNHk/pvijEDOKPKc1nBkvbreMA0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vD2VL/btsdG9XNNHk/pvijEDOKPKc1nBkvbreMA0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vD2VL/btsdG9XNNHk/pvijEDOKPKc1nBkvbreMA0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvD2VL%2FbtsdG9XNNHk%2FpvijEDOKPKc1nBkvbreMA0%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;501&quot; height=&quot;486&quot; data-origin-width=&quot;501&quot; data-origin-height=&quot;486&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[Finish] 버튼을 클릭하여 완료하면 아래 화면과 같이&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sample 패키지 안에 controller 패키지가 추가된 것을 볼 수 있습니다!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;276&quot; data-origin-height=&quot;503&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bre9tF/btsdKjE575N/ScnmRwrdb67O4JkZTzoWT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bre9tF/btsdKjE575N/ScnmRwrdb67O4JkZTzoWT0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bre9tF/btsdKjE575N/ScnmRwrdb67O4JkZTzoWT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbre9tF%2FbtsdKjE575N%2FScnmRwrdb67O4JkZTzoWT0%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;276&quot; height=&quot;503&quot; data-origin-width=&quot;276&quot; data-origin-height=&quot;503&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 controller 패키지 밑에 HelloWorldController 클래스를 생성해봅시다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;controller 패키지 우클릭 후 [New &amp;gt; Class]를 클릭해주세요!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;524&quot; data-origin-height=&quot;626&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d40MzA/btsdIHzH804/t2D2Ct4NavCadiZLAnWhCk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d40MzA/btsdIHzH804/t2D2Ct4NavCadiZLAnWhCk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d40MzA/btsdIHzH804/t2D2Ct4NavCadiZLAnWhCk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd40MzA%2FbtsdIHzH804%2Ft2D2Ct4NavCadiZLAnWhCk%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;524&quot; height=&quot;626&quot; data-origin-width=&quot;524&quot; data-origin-height=&quot;626&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Name에만 &quot;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;HelloWorldController&quot;라고 이름합시다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;원래 Java에서는 [public static void main(String[] args)] 항목을 추가하지만&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;여기서는 그럴 필요 없이 여러 어노테이션들이 대신 기능을 수행해줄겁니다 ㅎㅎ&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;[Finish] 버튼을 클릭하면 아래와 같이 나올 겁니다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;451&quot; data-origin-height=&quot;172&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/csvBRK/btsdHaPWhtW/P6NHLKdvkCDFIEjJSP1kkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/csvBRK/btsdHaPWhtW/P6NHLKdvkCDFIEjJSP1kkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/csvBRK/btsdHaPWhtW/P6NHLKdvkCDFIEjJSP1kkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcsvBRK%2FbtsdHaPWhtW%2FP6NHLKdvkCDFIEjJSP1kkk%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;451&quot; height=&quot;172&quot; data-origin-width=&quot;451&quot; data-origin-height=&quot;172&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자, 이제 여기다가 아래의 코드를 작성해볼까요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1683053612309&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;package sample.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloWorldController {

	@RequestMapping(&quot;/&quot;)
	public String hello() {
		return &quot;Hello World!&quot;;
	}
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드에 대하여 짤막하게 설명하자면,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@RestController 어노테이션은 REST 컨트롤러 기능을 수행하도록 하는 어노테이션이며,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@RequestMapping 어노테이션은 해당 메서드를 실행할 수 있는 주소를 설정하는 어노테이션입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서는 기본 주소를 &quot; / &quot;로 지정하였습니다.&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;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1348&quot; data-origin-height=&quot;427&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PROpa/btsdGBtIQKc/2Z1uOkR6cAz3djSQ95Ekt0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PROpa/btsdGBtIQKc/2Z1uOkR6cAz3djSQ95Ekt0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PROpa/btsdGBtIQKc/2Z1uOkR6cAz3djSQ95Ekt0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPROpa%2FbtsdGBtIQKc%2F2Z1uOkR6cAz3djSQ95Ekt0%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;1348&quot; height=&quot;427&quot; data-origin-width=&quot;1348&quot; data-origin-height=&quot;427&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로그도 정상적으로 실행이 되었구요!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;485&quot; data-origin-height=&quot;186&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bT4A6u/btsdJhtYsua/PrsGLzOTmASMfmqkSzMKU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bT4A6u/btsdJhtYsua/PrsGLzOTmASMfmqkSzMKU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bT4A6u/btsdJhtYsua/PrsGLzOTmASMfmqkSzMKU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbT4A6u%2FbtsdJhtYsua%2FPrsGLzOTmASMfmqkSzMKU1%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;485&quot; height=&quot;186&quot; data-origin-width=&quot;485&quot; data-origin-height=&quot;186&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;무사히 &quot;Hello World!&quot;도 띄웠습니다!&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;조금은 다사다난 했지만 Spring Boot의 첫 발걸음을 뗀 기분입니다!&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 발걸음을 떼는 다른 분들은 저보다는 덜 실수하기를 바라며 이만 글을 마치겠습니다 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감사합니다!&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;niniz&quot; data-emoticon-name=&quot;048&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/048.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/048.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Java 공부하기/Spring Boot</category>
      <category>developer</category>
      <category>java</category>
      <category>spring</category>
      <category>springboot</category>
      <category>web</category>
      <category>개발자</category>
      <category>스프링</category>
      <category>웹</category>
      <category>웹개발</category>
      <category>자바</category>
      <author>워누</author>
      <guid isPermaLink="true">https://seoneu.tistory.com/51</guid>
      <comments>https://seoneu.tistory.com/51#entry51comment</comments>
      <pubDate>Wed, 3 May 2023 04:01:26 +0900</pubDate>
    </item>
    <item>
      <title>[JAVA/Spring Boot] Windows 환경에서 STS 4 설치하기</title>
      <link>https://seoneu.tistory.com/50</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요 워누입니다 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 윈도우 PC에 Spring Boot 설치하는 방법에 대해서 포스팅하겠습니다!&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;우선 Spring boot 설치를 하기 전에 JDK는 기본적으로 설치가 되어 있어야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JDK 설치가 되어 있지 않으신 분은 아래 사이트에서 JDK를 1.8 버전 이상으로 설치해주세요..!&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;a href=&quot;https://www.oracle.com/java/technologies/downloads/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.oracle.com/java/technologies/downloads/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1682905466106&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;Download the Latest Java LTS Free&quot; data-og-description=&quot;Subscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts.&quot; data-og-host=&quot;www.oracle.com&quot; data-og-source-url=&quot;https://www.oracle.com/java/technologies/downloads/&quot; data-og-url=&quot;https://www.oracle.com/java/technologies/downloads/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/UH8yc/hySsmoXoo4/KTXpDkfUiJM4dTP02NRsWK/img.jpg?width=1200&amp;amp;height=628&amp;amp;face=0_0_1200_628,https://scrap.kakaocdn.net/dn/qxfLk/hySsfQTb0H/QC9RkhZgBCTPMekDQk1qi0/img.jpg?width=1200&amp;amp;height=1200&amp;amp;face=0_0_1200_1200&quot;&gt;&lt;a href=&quot;https://www.oracle.com/java/technologies/downloads/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.oracle.com/java/technologies/downloads/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/UH8yc/hySsmoXoo4/KTXpDkfUiJM4dTP02NRsWK/img.jpg?width=1200&amp;amp;height=628&amp;amp;face=0_0_1200_628,https://scrap.kakaocdn.net/dn/qxfLk/hySsfQTb0H/QC9RkhZgBCTPMekDQk1qi0/img.jpg?width=1200&amp;amp;height=1200&amp;amp;face=0_0_1200_1200');&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;Download the Latest Java LTS Free&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Subscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.oracle.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;p data-ke-size=&quot;size16&quot;&gt;JDK 설치 및 환경 변수 편집 방법은 따로 설명드리지 않고 바로 넘어가도록 할게요 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;편집이 완료되신 분은 아래 사이트로 접속해주세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://spring.io/tools&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://spring.io/tools&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1682905849140&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;Spring | Home&quot; data-og-description=&quot;Cloud Your code, any cloud&amp;mdash;we&amp;rsquo;ve got you covered. Connect and scale your services, whatever your platform.&quot; data-og-host=&quot;spring.io&quot; data-og-source-url=&quot;https://spring.io/tools&quot; data-og-url=&quot;https://spring.io&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/oe7Il/hySsiNDyqD/7ReClUdxavlH7yXKEy5uek/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/nBaCq/hySscmlukO/44elUmuvIquqMNrF6rCYy1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://spring.io/tools&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://spring.io/tools&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/oe7Il/hySsiNDyqD/7ReClUdxavlH7yXKEy5uek/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/nBaCq/hySscmlukO/44elUmuvIquqMNrF6rCYy1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&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;Spring | Home&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Cloud Your code, any cloud&amp;mdash;we&amp;rsquo;ve got you covered. Connect and scale your services, whatever your platform.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;spring.io&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;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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;990&quot; data-origin-height=&quot;625&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMa96d/btsdpaa0JE7/MGqjfQkOTqZPFTJIKPvBO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMa96d/btsdpaa0JE7/MGqjfQkOTqZPFTJIKPvBO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMa96d/btsdpaa0JE7/MGqjfQkOTqZPFTJIKPvBO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMa96d%2Fbtsdpaa0JE7%2FMGqjfQkOTqZPFTJIKPvBO1%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;990&quot; height=&quot;625&quot; data-origin-width=&quot;990&quot; data-origin-height=&quot;625&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기에서 설치하시는 PC의 운영체제에 맞는 tool을 클릭하시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 여기서 &quot;4.18.0 - WINDOWS X86_64&quot;로 클릭하여 다운로드 받았습니다.&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;다운받은 파일은 &quot;Spring-tool-suite-4-4.18.0.RELEASE.(이하 생략)&quot;라는 이름의 jar 파일입니다!&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;782&quot; data-origin-height=&quot;548&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ceTVho/btsdhA9pyoQ/FnuC8x6p0VQmv0ZqUwL6Zk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ceTVho/btsdhA9pyoQ/FnuC8x6p0VQmv0ZqUwL6Zk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ceTVho/btsdhA9pyoQ/FnuC8x6p0VQmv0ZqUwL6Zk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FceTVho%2FbtsdhA9pyoQ%2FFnuC8x6p0VQmv0ZqUwL6Zk%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;782&quot; height=&quot;548&quot; data-origin-width=&quot;782&quot; data-origin-height=&quot;548&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;압축을 한번 풀어보겠습니다..!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(압축을 풀어보니 contents.zip 압축파일이 포함되어 있어 함께 해제해 주겠습니다..!)&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;780&quot; data-origin-height=&quot;546&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dGWukW/btsdhzJtf9K/JCMHP9KqDnD0CVGfRKELw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dGWukW/btsdhzJtf9K/JCMHP9KqDnD0CVGfRKELw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dGWukW/btsdhzJtf9K/JCMHP9KqDnD0CVGfRKELw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdGWukW%2FbtsdhzJtf9K%2FJCMHP9KqDnD0CVGfRKELw0%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;780&quot; height=&quot;546&quot; data-origin-width=&quot;780&quot; data-origin-height=&quot;546&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기 있는 파일을 압축 해제해보니...?!?!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;671&quot; data-origin-height=&quot;365&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/15nh9/btsdjo8KmJB/txImwT1NbgvlLSMsCHqcnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/15nh9/btsdjo8KmJB/txImwT1NbgvlLSMsCHqcnk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/15nh9/btsdjo8KmJB/txImwT1NbgvlLSMsCHqcnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F15nh9%2Fbtsdjo8KmJB%2FtxImwT1NbgvlLSMsCHqcnk%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;671&quot; height=&quot;365&quot; data-origin-width=&quot;671&quot; data-origin-height=&quot;365&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실패한 친구들이 꽤 있긴 해서 걱정되긴 합니다만 (나중에 프로젝트 띄울 때 실패되진 않겠죠..?)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나머지는 압축 해제가 성공적으로 된 것 같네요ㅎㅎ&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;379&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dBBoqw/btsdeYvWWMa/Mu1vFJtxdVjSafBuhG3F4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dBBoqw/btsdeYvWWMa/Mu1vFJtxdVjSafBuhG3F4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dBBoqw/btsdeYvWWMa/Mu1vFJtxdVjSafBuhG3F4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdBBoqw%2FbtsdeYvWWMa%2FMu1vFJtxdVjSafBuhG3F4K%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;640&quot; height=&quot;379&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;379&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;그럼 이제 SpringToolSuite4.exe 파일을 실행해보도록 하죠!&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;869&quot; data-origin-height=&quot;419&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z11jq/btsdi2ECTwy/AsQ3jf2tgh6qc4oZR4Tkp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z11jq/btsdi2ECTwy/AsQ3jf2tgh6qc4oZR4Tkp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z11jq/btsdi2ECTwy/AsQ3jf2tgh6qc4oZR4Tkp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz11jq%2Fbtsdi2ECTwy%2FAsQ3jf2tgh6qc4oZR4Tkp1%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;869&quot; height=&quot;419&quot; data-origin-width=&quot;869&quot; data-origin-height=&quot;419&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클릭해보면 위 화면과 같이 나옵니다!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;625&quot; data-origin-height=&quot;277&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cHblgq/btsdefY1xNs/GFo3a3d8kdfI7MdTLh9570/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cHblgq/btsdefY1xNs/GFo3a3d8kdfI7MdTLh9570/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cHblgq/btsdefY1xNs/GFo3a3d8kdfI7MdTLh9570/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcHblgq%2FbtsdefY1xNs%2FGFo3a3d8kdfI7MdTLh9570%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;625&quot; height=&quot;277&quot; data-origin-width=&quot;625&quot; data-origin-height=&quot;277&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 eclipse에서 본 것처럼 workspace 경로 설정 단계가 있네요 ㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각자 자신의 환경에 맞게 해당 경로를 수정해주시면 됩니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 Launch 버튼을 클릭하면..!&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-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1010&quot; data-origin-height=&quot;761&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ek1xSs/btsdemqjtgE/NmQN9rzDm9S6IhudDkVSpK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ek1xSs/btsdemqjtgE/NmQN9rzDm9S6IhudDkVSpK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ek1xSs/btsdemqjtgE/NmQN9rzDm9S6IhudDkVSpK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fek1xSs%2FbtsdemqjtgE%2FNmQN9rzDm9S6IhudDkVSpK%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;1010&quot; height=&quot;761&quot; data-origin-width=&quot;1010&quot; data-origin-height=&quot;761&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;STS가 정상적으로 실행된 것을 볼 수 있습니다!!&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;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;008&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/008.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/008.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Java 공부하기/Spring Boot</category>
      <category>java</category>
      <category>spring</category>
      <category>springboot</category>
      <category>web</category>
      <category>개발</category>
      <category>스프링</category>
      <category>스프링부트</category>
      <category>웹개발</category>
      <author>워누</author>
      <guid isPermaLink="true">https://seoneu.tistory.com/50</guid>
      <comments>https://seoneu.tistory.com/50#entry50comment</comments>
      <pubDate>Mon, 1 May 2023 12:17:37 +0900</pubDate>
    </item>
    <item>
      <title>[HTML5] 공간 분할 태그에 대해 알아봅시다!</title>
      <link>https://seoneu.tistory.com/49</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요 워누입니다 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 일이 있어 잠시 블로그 포스팅을 쉬었습니다만 다시 일상으로 복귀하고 회사에 취직되어&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 힘내서 복귀해보고자 해요:)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 HTML5, 그 중에서도 가장 기초적이지만 모든 이들이 많이 쓰는 &quot;공간 분할 태그&quot;에 대하여 포스팅하겠습니다!&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;HTML에 익숙치 않은 분들은 &quot;공간 분할 태그&quot;란 말도 이해가 안되거니와&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;&quot;공간 분할 태그&quot;는 말 그대로 웹 페이지의 공간을 분할하기 위한 태그입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹 페이지의 공간을 분할하면 우리가 원하는 레이아웃을 만들어내기 위함인데요,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉽게 말해 더 예쁘게 꾸미고, Javascript를 활용하여 동적인 이벤트를 만들어낼 수도 있습니다!&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;&quot;공간 분할 태그&quot;의 종류는 &amp;lt;div&amp;gt;, &amp;lt;span&amp;gt; 이렇게 두 가지가 있으며,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;div&amp;gt; 태그는 block 형식으로 공간을 분할하고, &amp;lt;span&amp;gt; 태그는 inline 형식으로 공간을 분할합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;글로만 보면 당연히 이해가 쉽지 않으니 예시 코드와 실행 결과를 함께 보실까요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;html5 코드&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1652369738073&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE HTML&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
	&amp;lt;div&amp;gt;div 태그 1&amp;lt;/div&amp;gt;
	&amp;lt;div&amp;gt;div 태그 2&amp;lt;/div&amp;gt;
	&amp;lt;div&amp;gt;div 태그 3&amp;lt;/div&amp;gt;
	&amp;lt;span&amp;gt;span 태그 1&amp;lt;/span&amp;gt;
	&amp;lt;span&amp;gt;span 태그 2&amp;lt;/span&amp;gt;
	&amp;lt;span&amp;gt;span 태그 3&amp;lt;/span&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;실행 결과&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;공간분할태그.PNG&quot; data-origin-width=&quot;284&quot; data-origin-height=&quot;90&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UgNH0/btrBY1vl1D0/izwfCEwxDMwk2bjjlEPPz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UgNH0/btrBY1vl1D0/izwfCEwxDMwk2bjjlEPPz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UgNH0/btrBY1vl1D0/izwfCEwxDMwk2bjjlEPPz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUgNH0%2FbtrBY1vl1D0%2FizwfCEwxDMwk2bjjlEPPz1%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;284&quot; height=&quot;90&quot; data-filename=&quot;공간분할태그.PNG&quot; data-origin-width=&quot;284&quot; data-origin-height=&quot;90&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 &amp;lt;div&amp;gt; 태그는 줄바꿈이 되었고, &amp;lt;span&amp;gt; 태그는 줄바꿈이 없습니다!!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래도 태그의 명확한 차이점을 알아보기 위해 실행 결과 화면에서 개발자 도구를 실행해봅시다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(키보드 F12 또는 Ctrl+Shift+I을 눌러주세요.)&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-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;개발자도구.PNG&quot; data-origin-width=&quot;620&quot; data-origin-height=&quot;882&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ErbDQ/btrBUTZgsu8/47Y4XCuON4ZuGJKdm6QTs0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ErbDQ/btrBUTZgsu8/47Y4XCuON4ZuGJKdm6QTs0/img.png&quot; data-alt=&quot;개발자 도구 내 &amp;quot;Elements&amp;quot; 매뉴 클릭 시 보여지는 화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ErbDQ/btrBUTZgsu8/47Y4XCuON4ZuGJKdm6QTs0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FErbDQ%2FbtrBUTZgsu8%2F47Y4XCuON4ZuGJKdm6QTs0%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;402&quot; height=&quot;572&quot; data-filename=&quot;개발자도구.PNG&quot; data-origin-width=&quot;620&quot; data-origin-height=&quot;882&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;개발자 도구 내 &quot;Elements&quot; 매뉴 클릭 시 보여지는 화면&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;이렇게 개발자 도구가 실행되었으면 맨 처음, &quot;div 태그 1&quot;에 마우스를 올려봅시다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;div.PNG&quot; data-origin-width=&quot;1285&quot; data-origin-height=&quot;937&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tOvXB/btrBYEtEyzv/UxpkVMetJAhWPp2OiV9bE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tOvXB/btrBYEtEyzv/UxpkVMetJAhWPp2OiV9bE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tOvXB/btrBYEtEyzv/UxpkVMetJAhWPp2OiV9bE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtOvXB%2FbtrBYEtEyzv%2FUxpkVMetJAhWPp2OiV9bE1%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;672&quot; height=&quot;490&quot; data-filename=&quot;div.PNG&quot; data-origin-width=&quot;1285&quot; data-origin-height=&quot;937&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;div&amp;gt; 태그 구역이 표시된 것을 볼 수 있네요:)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;입력한 라인 전체가 파란색으로 지정된걸 볼 수 있습니다❗&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번엔 &quot;span 태그 1&quot;에 마우스를 올려보겠습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;span.PNG&quot; data-origin-width=&quot;963&quot; data-origin-height=&quot;939&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpNoka/btrBY2gJz3M/nBiPeg7UKlPCFnaXzpmoE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpNoka/btrBY2gJz3M/nBiPeg7UKlPCFnaXzpmoE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpNoka/btrBY2gJz3M/nBiPeg7UKlPCFnaXzpmoE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpNoka%2FbtrBY2gJz3M%2FnBiPeg7UKlPCFnaXzpmoE1%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;358&quot; height=&quot;349&quot; data-filename=&quot;span.PNG&quot; data-origin-width=&quot;963&quot; data-origin-height=&quot;939&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;lt;div&amp;gt; 태그와 다르게 &amp;lt;span&amp;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;lt;div&amp;gt; 태그는 웹 페이지의 너비만큼 차지하여 공간을 분할하는 태그이고,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;span&amp;gt; 태그는 본인이 입력한 범위만 공간을 분할하는 태그임을 알 수 있었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 언급한 것처럼 가장 기초적이지만 가장 많이 쓰이는 태그 중 하나에요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;❗❗❗❗ 당장 네이버에서 개발자 도구 실행한 다음 ctrl+f를 누르고&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;div, span을 각각 입력해보시면 아래와 같이 엄청 많이 나옵니다 ❗❗❗❗&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-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;네이버div.PNG&quot; data-origin-width=&quot;1073&quot; data-origin-height=&quot;682&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/D3RrG/btrB6KT2IC0/DxA1mpMpUX8QXHmQtqHROK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/D3RrG/btrB6KT2IC0/DxA1mpMpUX8QXHmQtqHROK/img.png&quot; data-alt=&quot;div 태그 검색 결과(872개)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/D3RrG/btrB6KT2IC0/DxA1mpMpUX8QXHmQtqHROK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FD3RrG%2FbtrB6KT2IC0%2FDxA1mpMpUX8QXHmQtqHROK%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;1073&quot; height=&quot;682&quot; data-filename=&quot;네이버div.PNG&quot; data-origin-width=&quot;1073&quot; data-origin-height=&quot;682&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;div 태그 검색 결과(872개)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;네이버span.PNG&quot; data-origin-width=&quot;1076&quot; data-origin-height=&quot;684&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PjFJ0/btrB6uxxSS8/LVVcCaxazTwHVm7KevQsE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PjFJ0/btrB6uxxSS8/LVVcCaxazTwHVm7KevQsE0/img.png&quot; data-alt=&quot;span 태그 검색 결과(736개)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PjFJ0/btrB6uxxSS8/LVVcCaxazTwHVm7KevQsE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPjFJ0%2FbtrB6uxxSS8%2FLVVcCaxazTwHVm7KevQsE0%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;1076&quot; height=&quot;684&quot; data-filename=&quot;네이버span.PNG&quot; data-origin-width=&quot;1076&quot; data-origin-height=&quot;684&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;span 태그 검색 결과(736개)&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;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 포스팅에서는 태그에 의미를 부여하는 시멘틱 태그에 대해서 작성해보겠습니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 여기까지:)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;읽어주셔서 감사합니다 &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>HTML5&amp;amp;CSS3</category>
      <category>developer</category>
      <category>frontend</category>
      <category>HTML</category>
      <category>개발자</category>
      <category>웹개발</category>
      <category>프론트엔드</category>
      <author>워누</author>
      <guid isPermaLink="true">https://seoneu.tistory.com/49</guid>
      <comments>https://seoneu.tistory.com/49#entry49comment</comments>
      <pubDate>Sat, 14 May 2022 12:23:39 +0900</pubDate>
    </item>
    <item>
      <title>[Javascript]  키워드 var와 let의 차이는 무엇일까?</title>
      <link>https://seoneu.tistory.com/48</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요 워누입니다 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 자바스크립트를 입문하시는 분들이라면 꼭 알아야 할 상식 중 하나인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;var 키워드와 let 키워드의 차이점에 대해서 포스팅해보고자 합니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 내용은 가장 기본적이기에 자바스크립트 개발자(신입)로 입사지원 시 기술면접에서 물어보기도 하니,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필요하신 분들에게 도움이 되기를 바라며 글을 시작해보겠습니다! &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;** 차이점만 간략하게 알고 싶으신 분들은 스크롤을 아래로 내려 표만 보셔도 됩니다(☞ﾟヮﾟ)☞ **&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;var 키워드, let 키워드 모두 아래처럼 변수 선언 시 사용한다는 것은 아실 거라 믿습니다!&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;var num1 = 12;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;let num2 = 34;&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;두 키워드가 차이가 없다면 굳이 var, let을 구분하지 않았겠죠?&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;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;특정 변수를 사용할 수 있는 유효 범위를 '스코프'라고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;흔히 조건문, 반복문, 대괄호 등으로 만들어 지는데요, 아래 간단한 예시로 보여드릴게요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1645288733930&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 전역 스코프

{
    // 스코프 A
    
    {
        // 스코프 A-1
    }
}

{
    // 스코프 B
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 예시에서 대괄호로 감싼 부분이 하나의 유효 스코프입니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가로 전역 스코프는 &quot;가장 외곽에 있는 코드를 입력할 수 있는, 전체가 유효한 범위&quot;라는 개념이고 이러한 전역 스코프를 포함해서 스코프의 갯수는 총 4개임을 알수 있습니다..!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 개념을 잘 숙지하시고 아래 예시를 봐주세요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(다른 html 코드는 생략하고 script 부분만 보여드릴게요!)&lt;/p&gt;
&lt;pre id=&quot;code_1645363325332&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;script&amp;gt;

    {
        // 스코프 A
        var num = 12;
    }
    {
        // 스코프 B
        alert(num);
    }

    // 전역 스코프
    alert(num);
	
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;var 키워드로 스코프 A에서 선언 후 스코프 B와 전역 스코프에서 alert으로 출력 시&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두 명령어 모두 정상적으로 실행되어 아래 이미지가 두번 출력됨을 알 수 있을 것입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;varlet_1.PNG&quot; data-origin-width=&quot;463&quot; data-origin-height=&quot;141&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q8Cjk/btrtNRguFsl/16k4Z3ubiarCoCdcK0QIF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q8Cjk/btrtNRguFsl/16k4Z3ubiarCoCdcK0QIF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q8Cjk/btrtNRguFsl/16k4Z3ubiarCoCdcK0QIF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq8Cjk%2FbtrtNRguFsl%2F16k4Z3ubiarCoCdcK0QIF1%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;463&quot; height=&quot;141&quot; data-filename=&quot;varlet_1.PNG&quot; data-origin-width=&quot;463&quot; data-origin-height=&quot;141&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, var 키워드로 선언한 변수는 다른 스코프에서도 사용할 수 있다는 이야기가 되죠..!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 이번엔 var 키워드를 let 키워드로 바꿔볼까요?&lt;/p&gt;
&lt;pre id=&quot;code_1645364209733&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;script&amp;gt;

    {
        // 스코프 A
        let num = 12;
    }
    {
        // 스코프 B
        alert(num);
    }

    // 전역 스코프
    alert(num);
	
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행하면 정상적으로 alert이 뜨지 않을 건데요,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VS Code에서 실행하여 디버그 콘솔 창을 확인하거나&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;varlet_2.PNG&quot; data-origin-width=&quot;374&quot; data-origin-height=&quot;59&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PwpKg/btrtQokDDqw/KKQQjIkurDHkaQtSlQTUk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PwpKg/btrtQokDDqw/KKQQjIkurDHkaQtSlQTUk1/img.png&quot; data-alt=&quot;VS Code 디버그 콘솔에서 확인한 오류 메세지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PwpKg/btrtQokDDqw/KKQQjIkurDHkaQtSlQTUk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPwpKg%2FbtrtQokDDqw%2FKKQQjIkurDHkaQtSlQTUk1%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;374&quot; height=&quot;59&quot; data-filename=&quot;varlet_2.PNG&quot; data-origin-width=&quot;374&quot; data-origin-height=&quot;59&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;VS Code 디버그 콘솔에서 확인한 오류 메세지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;varlet_3.PNG&quot; data-origin-width=&quot;319&quot; data-origin-height=&quot;59&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/INH0T/btrtJEbqMfX/rw3Voer6Vx7xOiVe9scqEk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/INH0T/btrtJEbqMfX/rw3Voer6Vx7xOiVe9scqEk/img.png&quot; data-alt=&quot;크롬 개발자 도구를 통해 확인한 오류 메세지&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/INH0T/btrtJEbqMfX/rw3Voer6Vx7xOiVe9scqEk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FINH0T%2FbtrtJEbqMfX%2Frw3Voer6Vx7xOiVe9scqEk%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;319&quot; height=&quot;59&quot; data-filename=&quot;varlet_3.PNG&quot; data-origin-width=&quot;319&quot; data-origin-height=&quot;59&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;크롬 개발자 도구를 통해 확인한 오류 메세지&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 오류 메세지의 뜻은 num이라는 변수명이 정의되지 않았다는 의미인데요,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 두가지 테스트를 통해 var 키워드와 let 키워드의 차이점을 확인했으니 한번 정리해보죠!&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;var 키워드 : 전역 스코프 위치에 변수를 선언하는 키워드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;let 키워드 : 특정 스코프 내부에서만 유효한 변수를 선언하는 키워드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스코프 범위에 따라 구분을 해보았는데요,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이로 인해 let 키워드는 특정 스코프 내부에서만 변수를 사용 후 스코프를 벗어나면 영향을 끼치지 않아 메모리 등 시스템 자원을 적절하게 이용할 수 있는 반면 var 키워드는 그렇지 못하다는 단점이 있습니다 &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;위에서 설명드린 var 키워드의 특성을 제대로 이해하지 못하고 사용한다면 다양한 실수를 유발하기도 하는데요,&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;pre id=&quot;code_1645370608222&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;script&amp;gt;
	
    for(var i=0; i&amp;lt;3; i++){
        setTimeout(() =&amp;gt; {
            alert(i);
        }, 1000*i);
    }
    
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 함수의 실행 결과를 한번 예측해봅시다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;setTimeOut() 함수는 첫 번째 매개변수에 넣은 코드(함수)를 두 번째 매개변수에 넣은 시간 이후에 실행하게 만드는 함수인데요, 이 코드를 실행하면 0초 후 '0', 1초 후 '1', 2초 후 '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;하지만 실제로 실행을 해보면...&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;varlet_4.PNG&quot; data-origin-width=&quot;452&quot; data-origin-height=&quot;143&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KncZ9/btrtKCErFZv/yDzsV05aL1vnNLYyk0t9xK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KncZ9/btrtKCErFZv/yDzsV05aL1vnNLYyk0t9xK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KncZ9/btrtKCErFZv/yDzsV05aL1vnNLYyk0t9xK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKncZ9%2FbtrtKCErFZv%2FyDzsV05aL1vnNLYyk0t9xK%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;452&quot; height=&quot;143&quot; data-filename=&quot;varlet_4.PNG&quot; data-origin-width=&quot;452&quot; data-origin-height=&quot;143&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;...?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1초 간격을 두고 '3'을 3번 출력하게 되는데요,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1초 후에 i를 출력할 때 i는 이미 반복문을 수행 후 전역 스코프에 '3'으로 저장되었기 때문에 '3'만 3번 출력한 것입니다.&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;let 키워드를 사용하지 않으면서 위 현상을 방지하기 위해서는 아래와 같이 코드를 수정해서 사용하여야 했습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1645371197412&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;script&amp;gt;
	
    for(var i=0; i&amp;lt;3; i++){
        ((i) =&amp;gt; {
            setTimeout(() =&amp;gt; {
                alert(i);
            }, 1000*i);
        })(i);
    }

&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;딱 봐도 복잡해보이죠?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수로 한번 감싸놓고 사용할 변수를 전달하는 방식이다 보니 코드가 지저분해진 것을 볼 수 있어요... &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래도 실행해보면 아래와 같이 출력은 정상적으로 진행됩니다.&amp;nbsp;&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-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;varlet_5.PNG&quot; data-origin-width=&quot;463&quot; data-origin-height=&quot;141&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TLaVM/btrtHUyk7Nm/LcKlhL50EBtfRBx2JijRq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TLaVM/btrtHUyk7Nm/LcKlhL50EBtfRBx2JijRq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TLaVM/btrtHUyk7Nm/LcKlhL50EBtfRBx2JijRq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTLaVM%2FbtrtHUyk7Nm%2FLcKlhL50EBtfRBx2JijRq1%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;463&quot; height=&quot;141&quot; data-filename=&quot;varlet_5.PNG&quot; data-origin-width=&quot;463&quot; data-origin-height=&quot;141&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;varlet_6.PNG&quot; data-origin-width=&quot;463&quot; data-origin-height=&quot;138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cGX5jI/btrtIPi4QLA/Pgiy03tdpJ3rCtsa4mYUkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cGX5jI/btrtIPi4QLA/Pgiy03tdpJ3rCtsa4mYUkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cGX5jI/btrtIPi4QLA/Pgiy03tdpJ3rCtsa4mYUkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGX5jI%2FbtrtIPi4QLA%2FPgiy03tdpJ3rCtsa4mYUkK%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;463&quot; height=&quot;138&quot; data-filename=&quot;varlet_6.PNG&quot; data-origin-width=&quot;463&quot; data-origin-height=&quot;138&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;varlet_7.PNG&quot; data-origin-width=&quot;461&quot; data-origin-height=&quot;145&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkej7a/btrtQpw48Zp/mPUNK0U7J20fMJ2eaTkMBK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkej7a/btrtQpw48Zp/mPUNK0U7J20fMJ2eaTkMBK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkej7a/btrtQpw48Zp/mPUNK0U7J20fMJ2eaTkMBK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbkej7a%2FbtrtQpw48Zp%2FmPUNK0U7J20fMJ2eaTkMBK%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;461&quot; height=&quot;145&quot; data-filename=&quot;varlet_7.PNG&quot; data-origin-width=&quot;461&quot; data-origin-height=&quot;145&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 이것을 let으로 바꾸면...!&lt;/p&gt;
&lt;pre id=&quot;code_1645371430062&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;script&amp;gt;
	
    for(let i=0; i&amp;lt;3; i++){
        setTimeout(() =&amp;gt; {
            alert(i);
        }, 1000*i);
    }
    
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복잡하지도 않고 실행결과는 처음 예상한 것처럼 0, 1, 2를 순서대로 출력되는 것을 볼 수 있어요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 식으로 var 키워드의 단점을 let 키워드로 보완할 수 있답니다!&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. 재선언&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;var 키워드는 재선언을 허용하는 반면 let 키워드는 재선언을 허용하지 않습니다.&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;VS Code를 통해 테스트한 결과를 바로 보여드릴게요!&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-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;varlet_8.PNG&quot; data-origin-width=&quot;536&quot; data-origin-height=&quot;492&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c6acVT/btrtMJbZvoN/ZuaCcDQ82gmguG7TH8tJhK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c6acVT/btrtMJbZvoN/ZuaCcDQ82gmguG7TH8tJhK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c6acVT/btrtMJbZvoN/ZuaCcDQ82gmguG7TH8tJhK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc6acVT%2FbtrtMJbZvoN%2FZuaCcDQ82gmguG7TH8tJhK%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;536&quot; height=&quot;492&quot; data-filename=&quot;varlet_8.PNG&quot; data-origin-width=&quot;536&quot; data-origin-height=&quot;492&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;var 키워드로 선언한 num1 변수는 재선언해도 문제 없이 넘어갔지만, num2는 재선언 시 이미 선언되었다는 뜻의 오류 메세지가 출력되었다는 것을 볼 수 있었습니다!&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;이렇게 보면 var 키워드 보다는 let 키워드를 쓰는게 좋겠다 생각이 드시겠지만, &lt;span style=&quot;letter-spacing: 0px;&quot;&gt;let 키워드는 ECMAScript 6에서 추가된 개념이기에 기존에 작성된 프로그램들은 대부분 var 키워드를 사용했을 것입니다! &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;또한 let 키워드는 인터넷 익스플로러에서는 지원하지 않기에 let 키워드를 사용하여 개발한 경우 인터넷 익스플로러에서는 정상적으로 동작하지 않는다는 특이사항이 있답니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&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;/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;table style=&quot;border-collapse: collapse; width: 100%; height: 57px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;키워드&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;유효 범위&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;재선언 가능 여부&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;var&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;전역 스코프&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;let&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;특정 스코프 내에서만 사용&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;불가능&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 이 간단한 내용을 작성하기 위해 위에서 쓸데없이 설명이 길었던 것 같긴 하지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확실하게 알아두면 좋을 것 같아 정리해보았습니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바스크립트 개발 입문자 분들에게 도움이 되길 바라며 여기서 글을 마무리하겠습니다:)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;niniz&quot; data-emoticon-name=&quot;043&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/043.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/043.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&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>Javascript</category>
      <category>developer</category>
      <category>HTML</category>
      <category>It</category>
      <category>javascript</category>
      <category>개발</category>
      <category>개발자</category>
      <category>웹개발</category>
      <category>입문</category>
      <category>자바스크립트</category>
      <category>직장인</category>
      <author>워누</author>
      <guid isPermaLink="true">https://seoneu.tistory.com/48</guid>
      <comments>https://seoneu.tistory.com/48#entry48comment</comments>
      <pubDate>Mon, 21 Feb 2022 01:25:04 +0900</pubDate>
    </item>
    <item>
      <title>[PHP] filter_var() 함수로 유효성 검사하기!</title>
      <link>https://seoneu.tistory.com/47</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요 워누입니다 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 지난번 정규표현식 2번째 포스팅에서 언급했던 filter_var() 함수에 대하여 포스팅해보고자 합니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(이메일 유효성 검사를 하는 방법으로 정규표현식과 함께 소개하였으며 자세한 내용은 아래 링크로!!)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://seoneu.tistory.com/43&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://seoneu.tistory.com/43&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1644344585731&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[PHP] 전화번호, 이메일 유효성 검사 :: 정규표현식 활용 (2)&quot; data-og-description=&quot;안녕하세요 워누입니다  지난 포스팅에 이어 오늘은 전화번호와 이메일 데이터에 대하여 정규표현식을 이용해 유효성을 검사해보는 방법을 포스팅해보겠습니다! 1. 전화번호 전화번호의 유&quot; data-og-host=&quot;seoneu.tistory.com&quot; data-og-source-url=&quot;https://seoneu.tistory.com/43&quot; data-og-url=&quot;https://seoneu.tistory.com/43&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bQK1Pt/hyNmzTA0BB/uSSz1v0IwRAiGFLFJm9mx1/img.png?width=592&amp;amp;height=60&amp;amp;face=0_0_592_60,https://scrap.kakaocdn.net/dn/XRrBW/hyNlqKKUR1/CFVekt7J4kTpMlKzf9eHuk/img.png?width=592&amp;amp;height=60&amp;amp;face=0_0_592_60,https://scrap.kakaocdn.net/dn/jQKfR/hyNmBYbbTu/K62O3Mc3vAcZWhLWWFSqFk/img.png?width=264&amp;amp;height=200&amp;amp;face=0_0_264_200&quot;&gt;&lt;a href=&quot;https://seoneu.tistory.com/43&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://seoneu.tistory.com/43&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bQK1Pt/hyNmzTA0BB/uSSz1v0IwRAiGFLFJm9mx1/img.png?width=592&amp;amp;height=60&amp;amp;face=0_0_592_60,https://scrap.kakaocdn.net/dn/XRrBW/hyNlqKKUR1/CFVekt7J4kTpMlKzf9eHuk/img.png?width=592&amp;amp;height=60&amp;amp;face=0_0_592_60,https://scrap.kakaocdn.net/dn/jQKfR/hyNmBYbbTu/K62O3Mc3vAcZWhLWWFSqFk/img.png?width=264&amp;amp;height=200&amp;amp;face=0_0_264_200');&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;[PHP] 전화번호, 이메일 유효성 검사 :: 정규표현식 활용 (2)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요 워누입니다  지난 포스팅에 이어 오늘은 전화번호와 이메일 데이터에 대하여 정규표현식을 이용해 유효성을 검사해보는 방법을 포스팅해보겠습니다! 1. 전화번호 전화번호의 유&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;seoneu.tistory.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;p data-ke-size=&quot;size16&quot;&gt;PHP에서 제공하는 filter_var() 함수는 특정한 값을 검사하는 함수로,&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;pre id=&quot;code_1644307424072&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;filter_var('검사할 값', 검사할 유형, (옵션));&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;'검사할 유형' 은 어떤 형식으로 검사할 건지를 결정할 수 있습니다!&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;table style=&quot;border-collapse: collapse; width: 100%; height: 200px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 28.1007%; height: 20px;&quot;&gt;파라미터(Parameter)&lt;/td&gt;
&lt;td style=&quot;width: 17.4031%; height: 20px;&quot;&gt;검사 유형&lt;/td&gt;
&lt;td style=&quot;width: 54.4961%; height: 20px;&quot;&gt;설명(Discription)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 28.1007%; height: 20px;&quot;&gt;&lt;b&gt;FILTER_VALIDATE_BOOLEAN&lt;br /&gt;&lt;b&gt;FILTER_VALIDATE_BOOL&lt;/b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 17.4031%; height: 20px;&quot;&gt;Bool&lt;/td&gt;
&lt;td style=&quot;width: 54.4961%; height: 20px;&quot;&gt;'1', 'true', 'on', 'yes'라는 데이터를 검사하면 'TRUE'를 응답합니다.&lt;br /&gt;이외의 다른 값은 'FALSE'를 응답합니다.&lt;br /&gt;&lt;br /&gt;*PHP 8 버전에서 추가된 파라미터입니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 28.1007%; height: 20px;&quot;&gt;&lt;b&gt;FILTER_VALIDATE_DOMAIN&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 17.4031%; height: 20px;&quot;&gt;도메인&lt;/td&gt;
&lt;td style=&quot;width: 54.4961%; height: 20px;&quot;&gt;입력된 값이 도메인 형식인지 검사합니다. &lt;br /&gt;(예시 : &lt;a href=&quot;http://test.domain.com)&quot;&gt;http://test.domain.com)&lt;/a&gt;&lt;br /&gt;도메인 형식이 맞다면&amp;nbsp;'TRUE'를 응답하고, 아니라면&amp;nbsp;'FALSE'를 응답합니다.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;*PHP 7 버전에서 추가된 파라미터입니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 28.1007%; height: 20px;&quot;&gt;&lt;b&gt;FILTER_VALIDATE_EMAIL&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 17.4031%; height: 20px;&quot;&gt;이메일&lt;/td&gt;
&lt;td style=&quot;width: 54.4961%; height: 20px;&quot;&gt;입력된 값이 이메일 형식인지 검사합니다. (예시 : id@testmail.com)&lt;br /&gt;이메일 형식이 맞다면 'TRUE'를 응답하고, 아니라면 'FALSE'를 응답합니다.&lt;br /&gt;&lt;br /&gt;&amp;lt;옵션 파라미터 및 설명&amp;gt;&lt;br /&gt;FILTER_FLAG_EMAIL_UNICODE : 이메일 주소 중 로컬(예시 중 'testmail'에 해당하는 부분)에 유니코드 문자를 포함하여 검사하는 옵션입니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 28.1007%; height: 20px;&quot;&gt;&lt;b&gt;FILTER_VALIDATE_FLOAT&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 17.4031%; height: 20px;&quot;&gt;실수&lt;/td&gt;
&lt;td style=&quot;width: 54.4961%; height: 20px;&quot;&gt;입력된 값이 실수 형식인지 검사합니다. (예시: 3.4, 12.01 ...)&lt;br /&gt;이메일 형식이 맞다면&amp;nbsp;'TRUE'를 응답하고, 아니라면&amp;nbsp;'FALSE'를 응답합니다.&lt;br /&gt;&lt;br /&gt;&amp;lt;옵션 파라미터 및 설명&amp;gt;&lt;br /&gt;FILTER_FLAG_ALLOW_THOUSAND : 1000 단위 숫자를 콤마( , ) 기호로 구분합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 28.1007%; height: 20px;&quot;&gt;&lt;b&gt;FILTER_VALIDATE_INT&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 17.4031%; height: 20px;&quot;&gt;정수&lt;/td&gt;
&lt;td style=&quot;width: 54.4961%; height: 20px;&quot;&gt;입력된 값이 10진수 정수 형식인지 검사합니다. (예시 : 1, 52, -4 ...)&lt;br /&gt;이메일 형식이 맞다면&amp;nbsp;'TRUE'를 응답하고, 아니라면&amp;nbsp;'FALSE'를 응답합니다.&lt;br /&gt;&lt;br /&gt;&amp;lt;옵션 파라미터 및 설명&amp;gt;&lt;br /&gt;FILTER_FLAG_ALLOW_OCTAL : 입력된 값을 &lt;span style=&quot;background-color: #fdfdfd; color: #000000;&quot;&gt;8진수로 검증하는 옵션입니다. 입력된 값이 0으로 시작하는 8진수의 데이터라면 TRUE를 응답하고, 아니라면 'FALSE'를 응답합니다.&lt;br /&gt;&lt;br /&gt;FILTER_FLAG_ALLOW_HEX : 입력된 값을 16&lt;span style=&quot;background-color: #fdfdfd; color: #000000;&quot;&gt;진수로 검증하는 옵션입니다. 입력된 값이 0x 혹은 0X으로 시작하는 16진수의 데이터라면 TRUE를 응답하고,&lt;span&gt;&amp;nbsp;&lt;/span&gt;아니라면&amp;nbsp;'FALSE'를 응답합니다.&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 28.1007%; height: 20px;&quot;&gt;&lt;b&gt;FILTER_VALIDATE_IP&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 17.4031%; height: 20px;&quot;&gt;아이피&lt;/td&gt;
&lt;td style=&quot;width: 54.4961%; height: 20px;&quot;&gt;입력된 값이 IP(default : IPv4) 형식인지 검사합니다. &lt;br /&gt;(예시 : 192.168.0.101)&lt;br /&gt;이메일 형식이 맞다면&amp;nbsp;'TRUE'를 응답하고, 아니라면&amp;nbsp;'FALSE'를 응답합니다.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f9f9f9;&quot;&gt;&amp;lt;옵션 파라미터 및 설명&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f9f9f9;&quot;&gt;FILTER_FLAG_IPV4 : IP를 IPv4 형식으로 검사하는 옵션입니다.&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #f9f9f9;&quot;&gt;FILTER_FLAG_IPV6 : IP를 IPv6 형식으로 검사하는 옵션입니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 28.1007%; height: 20px;&quot;&gt;&lt;b&gt;FILTER_VALIDATE_MAC&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 17.4031%; height: 20px;&quot;&gt;맥(MAC) 주소&lt;/td&gt;
&lt;td style=&quot;width: 54.4961%; height: 20px;&quot;&gt;입력된 값이 맥(MAC) 주소 형식인지 검사합니다. &lt;br /&gt;(예시 : 00-FF-2D-72-E8-F0)&lt;br /&gt;맥 주소 형식이 맞다면 'TRUE'를 응답하고, 아니라면 'FALSE'를 응답합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 28.1007%; height: 20px;&quot;&gt;&lt;b&gt;FILTER_VALIDATE_REGEXP&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 17.4031%; height: 20px;&quot;&gt;정규식(Perl 호환)&lt;/td&gt;
&lt;td style=&quot;width: 54.4961%; height: 20px;&quot;&gt;&lt;span style=&quot;background-color: #f9f9f9;&quot;&gt;입력된 값이 정규식 형식인지 검사합니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f9f9f9;&quot;&gt;정규식 형식이 맞다면 'TRUE'를 응답하고, 아니라면 'FALSE'를 응답합니다.&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 28.1007%; height: 20px;&quot;&gt;&lt;b&gt;FILTER_VALIDATE_URL&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 17.4031%; height: 20px;&quot;&gt;URL&lt;/td&gt;
&lt;td style=&quot;width: 54.4961%; height: 20px;&quot;&gt;입력된 값이 URL 형식인지 검사합니다. &lt;br /&gt;(예시 : &lt;a href=&quot;http://test.domain.com)&quot;&gt;http://test.domain.com)&lt;/a&gt;&lt;br /&gt;URL 형식이 맞다면 'TRUE'를 응답하고, 아니라면 'FALSE'를 응답합니다.&lt;br /&gt;&lt;br /&gt;&amp;lt;옵션 파라미터 및 설명&amp;gt;&lt;br /&gt;&lt;span&gt;FILTER_FLAG_SCHEME_REQUIRED : 입력 URL의 RFC를 준수하였는지 검사하는 옵션입니다. (예시 : http://example)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;FILTER_FLAG_HOST_REQUIRED : 입력 URL의 호스트 이름이 포함되어 있는지 검사하는 옵션입니다. (예시 : &lt;a href=&quot;http://www.example.com).&quot;&gt;http://test.domain.com)&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;FILTER_FLAG_PATH_REQUIRED : 입력 URL의 도메인 이름 뒤에 경로가 있는지 검사하는 옵션입니다. &lt;br /&gt;(예시 : &lt;a href=&quot;http://www.example.com/example1/).&quot;&gt;http://test.domain.com/example/).&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;FILTER_FLAG_QUERY_REQUIRED : 입력 URL의 쿼리 문자열이 있는지 검사하는 옵션입니다.(예: &lt;a href=&quot;http://test.domain.com/example/&quot;&gt;http://test.domain.com/example/test.php?query=value&lt;/a&gt;).&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제가 알아보기 쉽게 작성한 내용이다 보니&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 표의 내용에 대하여 더 자세히 알고 싶으시다면 PHP에서 제공하는 매뉴얼을 참고해주시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.php.net/manual/en/filter.filters.validate.php&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.php.net/manual/en/filter.filters.validate.php&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1644334989152&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;PHP: Validate filters - Manual&quot; data-og-description=&quot;Contrary to what documentation implies, the FILTER_NULL_ON_FAILURE seem to affect any validation filter, not just FILTER_VALIDATE_BOOLEAN. I've been using that since PHP 5.2, and as of PHP 5.6.8 it still works. I have no clue if it's a blug or if it is as &quot; data-og-host=&quot;www.php.net&quot; data-og-source-url=&quot;https://www.php.net/manual/en/filter.filters.validate.php&quot; data-og-url=&quot;https://www.php.net/manual/en/filter.filters.validate.php&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.php.net/manual/en/filter.filters.validate.php&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.php.net/manual/en/filter.filters.validate.php&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&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;PHP: Validate filters - Manual&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Contrary to what documentation implies, the FILTER_NULL_ON_FAILURE seem to affect any validation filter, not just FILTER_VALIDATE_BOOLEAN. I've been using that since PHP 5.2, and as of PHP 5.6.8 it still works. I have no clue if it's a blug or if it is as&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.php.net&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 이제 예시 코드를 보실까요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;간단하게 IP 검증하는 방법과 URL 검증하는 것 두 개 정도만 한번 보도록 하겠습니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(이번에는 요청-응답 페이지 없이 PHP 파일만 보여드리겠습니다 )&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;IP는 다음과 같이 검증합니다!&lt;/p&gt;
&lt;pre id=&quot;code_1644348075243&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?php

// 검증할 IP
$checkIP = &quot;192.168.0.101&quot; ;

// 검증
if (filter_var($checkIP, FILTER_VALIDATE_IP)) {
  echo $checkIP.&quot;은 정상적인 IP입니다.&quot;;
} else {
  echo &quot;올바르지 않은 IP를 입력하셨습니다.&quot;;
}

?&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 소스코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;filter_유효성1.PNG&quot; data-origin-width=&quot;351&quot; data-origin-height=&quot;73&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/K9VlS/btrsSwjDqqr/cHFErtyamDpK3ajjDkA3A1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/K9VlS/btrsSwjDqqr/cHFErtyamDpK3ajjDkA3A1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/K9VlS/btrsSwjDqqr/cHFErtyamDpK3ajjDkA3A1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FK9VlS%2FbtrsSwjDqqr%2FcHFErtyamDpK3ajjDkA3A1%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;351&quot; height=&quot;73&quot; data-filename=&quot;filter_유효성1.PNG&quot; data-origin-width=&quot;351&quot; data-origin-height=&quot;73&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;IP가 정상적으로 검증된 것을 볼 수 있습니다ㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;검증하는 값이 IP 형식과 맞지 않다면 &quot;올바르지 않은 IP를 입력하셨습니다.&quot;라고 나오겠죠?&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;URL을 검증해봅시다!&lt;/p&gt;
&lt;pre id=&quot;code_1644347088166&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?php

// 검증할 URL
$checkUrl = &quot;http://test.domain.com&quot;;

// 검증
if (filter_var($checkUrl, FILTER_VALIDATE_URL)) {
  echo $checkUrl.&quot;은 정상적인 url입니다.&quot;;
} else {
  echo &quot;올바르지 않은 url을 입력하셨습니다.&quot;;
}

?&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 소스코드를 실행하면 아래와 같은 결과를 얻을 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;filter_유효성2.PNG&quot; data-origin-width=&quot;357&quot; data-origin-height=&quot;76&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CRg3T/btrsSwjDqqR/2ypIBc1kSSyACPJlKzHrc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CRg3T/btrsSwjDqqR/2ypIBc1kSSyACPJlKzHrc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CRg3T/btrsSwjDqqR/2ypIBc1kSSyACPJlKzHrc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCRg3T%2FbtrsSwjDqqR%2F2ypIBc1kSSyACPJlKzHrc0%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;357&quot; height=&quot;76&quot; data-filename=&quot;filter_유효성2.PNG&quot; data-origin-width=&quot;357&quot; data-origin-height=&quot;76&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 URL 검증할 때 사용할 수 있는 옵션을 적용해보겠습니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;표에 소개된 URL 추가 검증 옵션 중 &quot;FILTER_FLAG_QUERY_REQUIRED&quot;를 사용하여 검증해봅시다!!&lt;/p&gt;
&lt;pre id=&quot;code_1644347340128&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?php

// 검증할 URL+Qurey
$checkUrl = &quot;http://test.domain.com/example/test.php?query=value&quot; ;

// 검증
if (filter_var($checkUrl, FILTER_VALIDATE_URL, FILTER_FLAG_QUERY_REQUIRED )) {
  echo $checkUrl.&quot;은 정상적인 url입니다.&quot;;
} else {
  echo &quot;올바르지 않은 url을 입력하셨습니다.&quot;;
}
?&amp;gt;&lt;/code&gt;&lt;/pre&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-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;filter_유효성3.PNG&quot; data-origin-width=&quot;568&quot; data-origin-height=&quot;69&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0Tn5U/btrsUa8cmWq/Oq4FZSIGTRv8TZbSHJGeL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0Tn5U/btrsUa8cmWq/Oq4FZSIGTRv8TZbSHJGeL0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0Tn5U/btrsUa8cmWq/Oq4FZSIGTRv8TZbSHJGeL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0Tn5U%2FbtrsUa8cmWq%2FOq4FZSIGTRv8TZbSHJGeL0%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;568&quot; height=&quot;69&quot; data-filename=&quot;filter_유효성3.PNG&quot; data-origin-width=&quot;568&quot; data-origin-height=&quot;69&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;/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;위 내용을 활용하여 PHP로 개발된 웹 페이지에서 특정 IP를 전달받는 경우, 회원가입 페이지를 구성하여 이메일을 검증하거나 숫자로 된 데이터(나이, 생년월일, 휴대폰 번호 등)를 검증하는 경우 등 나름 쓸만한 구석이 있을 것 같네요 ㅎㅎ&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;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;niniz&quot; data-emoticon-name=&quot;010&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/010.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/010.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;</description>
      <category>PHP</category>
      <category>developer</category>
      <category>filter_var</category>
      <category>It</category>
      <category>php</category>
      <category>Programming</category>
      <category>web</category>
      <category>개발</category>
      <category>개발자</category>
      <category>웹개발</category>
      <category>직장인</category>
      <author>워누</author>
      <guid isPermaLink="true">https://seoneu.tistory.com/47</guid>
      <comments>https://seoneu.tistory.com/47#entry47comment</comments>
      <pubDate>Wed, 9 Feb 2022 08:00:47 +0900</pubDate>
    </item>
    <item>
      <title>[Node.js] Mac에 nodejs, npm 설치하기!</title>
      <link>https://seoneu.tistory.com/46</link>
      <description>&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;오늘은 최근 가장 핫한 프론트엔드 라이브러리인 Angular, Vue, React 그리고 백엔드 언어인 Node.js까지..!&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;우선 Nodejs 사이트에 가서 파일을 다운받아야겠죠?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 홈페이지로 접근해주세요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://nodejs.org/ko/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://nodejs.org/ko/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1644085699784&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;Node.js&quot; data-og-description=&quot;Node.js&amp;reg; is a JavaScript runtime built on Chrome's V8 JavaScript engine.&quot; data-og-host=&quot;nodejs.org&quot; data-og-source-url=&quot;https://nodejs.org/ko/&quot; data-og-url=&quot;https://nodejs.org/ko/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/jeaNw/hyNjQoiwaj/6ezkedfJ86k1DvAlL7ISwK/img.png?width=224&amp;amp;height=256&amp;amp;face=0_0_224_256,https://scrap.kakaocdn.net/dn/DlBXU/hyNjOD0Dfu/VFyNX0R1talpQNaZCg5SP1/img.png?width=224&amp;amp;height=256&amp;amp;face=0_0_224_256&quot;&gt;&lt;a href=&quot;https://nodejs.org/ko/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://nodejs.org/ko/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/jeaNw/hyNjQoiwaj/6ezkedfJ86k1DvAlL7ISwK/img.png?width=224&amp;amp;height=256&amp;amp;face=0_0_224_256,https://scrap.kakaocdn.net/dn/DlBXU/hyNjOD0Dfu/VFyNX0R1talpQNaZCg5SP1/img.png?width=224&amp;amp;height=256&amp;amp;face=0_0_224_256');&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;Node.js&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Node.js&amp;reg; is a JavaScript runtime built on Chrome's V8 JavaScript engine.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;nodejs.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-27 오후 4.03.15.png&quot; data-origin-width=&quot;2384&quot; data-origin-height=&quot;1074&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/W2a4g/btrszlJqPf0/QYarczIxVEVBA9eaG5mPGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/W2a4g/btrszlJqPf0/QYarczIxVEVBA9eaG5mPGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/W2a4g/btrszlJqPf0/QYarczIxVEVBA9eaG5mPGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FW2a4g%2FbtrszlJqPf0%2FQYarczIxVEVBA9eaG5mPGk%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;2384&quot; height=&quot;1074&quot; data-filename=&quot;스크린샷 2022-01-27 오후 4.03.15.png&quot; data-origin-width=&quot;2384&quot; data-origin-height=&quot;1074&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;위와 같은 화면이 나오면 LTS 버전으로 다운로드를 받습니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;** 1월 말 기준으로 가장 최신버전은 17.4.0, LTS 버전은 16.13.2 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;** 시간이 지나 버전이 바뀌더라도 LTS 버전으로 받으시길 권장합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-27 오후 4.08.46.png&quot; data-origin-width=&quot;474&quot; data-origin-height=&quot;326&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4053j/btrsxfXrZcN/BNXhURkkG0Jr96HYOeprc1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4053j/btrsxfXrZcN/BNXhURkkG0Jr96HYOeprc1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4053j/btrsxfXrZcN/BNXhURkkG0Jr96HYOeprc1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4053j%2FbtrsxfXrZcN%2FBNXhURkkG0Jr96HYOeprc1%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;474&quot; height=&quot;326&quot; data-filename=&quot;스크린샷 2022-01-27 오후 4.08.46.png&quot; data-origin-width=&quot;474&quot; data-origin-height=&quot;326&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pkg 파일 다운로드가 완료되면 실행해주세요!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-27 오후 4.10.58.png&quot; data-origin-width=&quot;1232&quot; data-origin-height=&quot;872&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvbfkA/btrszmhgiOk/ZyrTHSKS9tRzgnvCShsYw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvbfkA/btrszmhgiOk/ZyrTHSKS9tRzgnvCShsYw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvbfkA/btrszmhgiOk/ZyrTHSKS9tRzgnvCShsYw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvbfkA%2FbtrszmhgiOk%2FZyrTHSKS9tRzgnvCShsYw1%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;1232&quot; height=&quot;872&quot; data-filename=&quot;스크린샷 2022-01-27 오후 4.10.58.png&quot; data-origin-width=&quot;1232&quot; data-origin-height=&quot;872&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;node 패키지와 npm 패키지를 동시에 설치한다고 소개되어 있네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;계속&quot; 버튼을 눌러서 진행합시다!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-27 오후 5.00.07.png&quot; data-origin-width=&quot;1216&quot; data-origin-height=&quot;866&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfHTo8/btrszkRhrFk/u4kayYonp2CgKmMns2f8YK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfHTo8/btrszkRhrFk/u4kayYonp2CgKmMns2f8YK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfHTo8/btrszkRhrFk/u4kayYonp2CgKmMns2f8YK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfHTo8%2FbtrszkRhrFk%2Fu4kayYonp2CgKmMns2f8YK%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;1216&quot; height=&quot;866&quot; data-filename=&quot;스크린샷 2022-01-27 오후 5.00.07.png&quot; data-origin-width=&quot;1216&quot; data-origin-height=&quot;866&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용권 계약 내용입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;계속&quot; 버튼을 눌러서 진행합시다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-27 오후 5.00.48.png&quot; data-origin-width=&quot;986&quot; data-origin-height=&quot;348&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dJX6kZ/btrszkKvjL5/oStlbZYWPg9K0QU7AlGUD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dJX6kZ/btrszkKvjL5/oStlbZYWPg9K0QU7AlGUD1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dJX6kZ/btrszkKvjL5/oStlbZYWPg9K0QU7AlGUD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdJX6kZ%2FbtrszkKvjL5%2FoStlbZYWPg9K0QU7AlGUD1%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;986&quot; height=&quot;348&quot; data-filename=&quot;스크린샷 2022-01-27 오후 5.00.48.png&quot; data-origin-width=&quot;986&quot; data-origin-height=&quot;348&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;동의&quot; 버튼 클릭하셔서 다음으로 넘어갑시다!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-27 오후 5.02.16.png&quot; data-origin-width=&quot;1228&quot; data-origin-height=&quot;866&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ntmtO/btrsxghL7fC/doKJrXJga4BnoMn5yybzH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ntmtO/btrsxghL7fC/doKJrXJga4BnoMn5yybzH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ntmtO/btrsxghL7fC/doKJrXJga4BnoMn5yybzH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FntmtO%2FbtrsxghL7fC%2FdoKJrXJga4BnoMn5yybzH0%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;1228&quot; height=&quot;866&quot; data-filename=&quot;스크린샷 2022-01-27 오후 5.02.16.png&quot; data-origin-width=&quot;1228&quot; data-origin-height=&quot;866&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 위치가 변경되어야 하는 경우라면 반드시 해당 단계에서 &quot;설치 위치 변경...&quot; 버튼을 클릭해서 변경해주세요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;변경이 필요없거나 설정이 완료되었다면 &quot;설치&quot; 버튼을 클릭합니다!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-27 오후 5.02.36.png&quot; data-origin-width=&quot;880&quot; data-origin-height=&quot;240&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pslNt/btrsA7Ys7cU/H4VxZ3sXfev2IKnl6JkYh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pslNt/btrsA7Ys7cU/H4VxZ3sXfev2IKnl6JkYh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pslNt/btrsA7Ys7cU/H4VxZ3sXfev2IKnl6JkYh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpslNt%2FbtrsA7Ys7cU%2FH4VxZ3sXfev2IKnl6JkYh1%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;880&quot; height=&quot;240&quot; data-filename=&quot;스크린샷 2022-01-27 오후 5.02.36.png&quot; data-origin-width=&quot;880&quot; data-origin-height=&quot;240&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이젠 맥북도 지문인증으로...!! &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비싼게 좋네요 ㅎㅎ&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-27 오후 5.02.53.png&quot; data-origin-width=&quot;1216&quot; data-origin-height=&quot;874&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/H8M1o/btrsxga0Goq/475bZiANImls72OCGU1mS0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/H8M1o/btrsxga0Goq/475bZiANImls72OCGU1mS0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/H8M1o/btrsxga0Goq/475bZiANImls72OCGU1mS0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FH8M1o%2Fbtrsxga0Goq%2F475bZiANImls72OCGU1mS0%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;1216&quot; height=&quot;874&quot; data-filename=&quot;스크린샷 2022-01-27 오후 5.02.53.png&quot; data-origin-width=&quot;1216&quot; data-origin-height=&quot;874&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;15~20초만 기다려주면 설치가 완료됩니다!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-27 오후 5.03.07.png&quot; data-origin-width=&quot;1216&quot; data-origin-height=&quot;872&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/T5FHy/btrsve5QvAA/vRubglLzKmj1vVYDbkap4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/T5FHy/btrsve5QvAA/vRubglLzKmj1vVYDbkap4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/T5FHy/btrsve5QvAA/vRubglLzKmj1vVYDbkap4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FT5FHy%2Fbtrsve5QvAA%2FvRubglLzKmj1vVYDbkap4k%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;1216&quot; height=&quot;872&quot; data-filename=&quot;스크린샷 2022-01-27 오후 5.03.07.png&quot; data-origin-width=&quot;1216&quot; data-origin-height=&quot;872&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;닫기&quot; 버튼을 클릭해주시고, &quot;터미널&quot;을 실행해주세요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(VS Code에서 진행해도 되고, 맥북 내장 터미널에서 진행해도 됩니다.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;856&quot; data-origin-height=&quot;948&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d0whfP/btrsDagixqa/ZZPNBbCBWugfKz7I5EtH4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d0whfP/btrsDagixqa/ZZPNBbCBWugfKz7I5EtH4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d0whfP/btrsDagixqa/ZZPNBbCBWugfKz7I5EtH4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd0whfP%2FbtrsDagixqa%2FZZPNBbCBWugfKz7I5EtH4K%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;856&quot; height=&quot;948&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;856&quot; data-origin-height=&quot;948&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VS Code 내 터미널은 상단 매뉴 중 &quot;보기&quot;-&amp;gt;&quot;터미널&quot;로 접근할 수 있답니다!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-27 오후 5.06.06.png&quot; data-origin-width=&quot;1224&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7OocY/btrstJLKyCR/mv24sst8CRcPSFFrmshAG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7OocY/btrstJLKyCR/mv24sst8CRcPSFFrmshAG1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7OocY/btrstJLKyCR/mv24sst8CRcPSFFrmshAG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7OocY%2FbtrstJLKyCR%2Fmv24sst8CRcPSFFrmshAG1%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;1224&quot; height=&quot;480&quot; data-filename=&quot;스크린샷 2022-01-27 오후 5.06.06.png&quot; data-origin-width=&quot;1224&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;터미널로 접근하셨다면 아래 명령어를 입력해주세요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;node -v&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-27 오후 5.06.26.png&quot; data-origin-width=&quot;778&quot; data-origin-height=&quot;202&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d6giDF/btrszkKvjPH/PY34E1daylEDwMPBMWNZsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d6giDF/btrszkKvjPH/PY34E1daylEDwMPBMWNZsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d6giDF/btrszkKvjPH/PY34E1daylEDwMPBMWNZsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd6giDF%2FbtrszkKvjPH%2FPY34E1daylEDwMPBMWNZsk%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;778&quot; height=&quot;202&quot; data-filename=&quot;스크린샷 2022-01-27 오후 5.06.26.png&quot; data-origin-width=&quot;778&quot; data-origin-height=&quot;202&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;node 패키지가 정상적으로 설치된 것을 볼 수 있네요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 아래 명령어를 입력해서 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;npm -v&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2022-01-27 오후 5.07.05.png&quot; data-origin-width=&quot;768&quot; data-origin-height=&quot;256&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NsiJM/btrsxhOv8Y4/RTbJmxGKkKlJ8Kjr6HGtbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NsiJM/btrsxhOv8Y4/RTbJmxGKkKlJ8Kjr6HGtbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NsiJM/btrsxhOv8Y4/RTbJmxGKkKlJ8Kjr6HGtbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNsiJM%2FbtrsxhOv8Y4%2FRTbJmxGKkKlJ8Kjr6HGtbk%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;768&quot; height=&quot;256&quot; data-filename=&quot;스크린샷 2022-01-27 오후 5.07.05.png&quot; data-origin-width=&quot;768&quot; data-origin-height=&quot;256&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;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;도움이 되셨길 바라며 오늘 포스팅은 이만 마무리하겠습니다 &lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;niniz&quot; data-emoticon-name=&quot;002&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/002.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/002.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;</description>
      <category>Node.js</category>
      <category>backend</category>
      <category>develop</category>
      <category>frontend</category>
      <category>It</category>
      <category>nodejs</category>
      <category>web</category>
      <category>개발</category>
      <category>백엔드</category>
      <category>웹개발</category>
      <category>프론트엔드</category>
      <author>워누</author>
      <guid isPermaLink="true">https://seoneu.tistory.com/46</guid>
      <comments>https://seoneu.tistory.com/46#entry46comment</comments>
      <pubDate>Sun, 6 Feb 2022 08:00:10 +0900</pubDate>
    </item>
    <item>
      <title>[Javascript] 자바스크립트의 대표적인 버그를 알아봅시다!</title>
      <link>https://seoneu.tistory.com/45</link>
      <description>&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요 워누입니다 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 누구나 알만한 자바스크립트의 대표적인 버그 2개에 대하여 포스팅해보고자 합니다!&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선, 우리 모두가 알고있는 보편적인 지식을 짚고 넘어가보도록 하죠 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. null&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무것도 없는 빈 값을 의미하며,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시로 변수 선언 후 초기화하지 않은 상태라고 보시면 됩니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;✔추가로, 참/거짓 연산 시에 거짓으로 응답되는 데이터입니다 &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;2. 세미콜론( ; )&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보편적으로 모든 프로그래밍 언어에서 문장의 끝을 알리는 기호에요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 내용은 처음 배울 때 다루는 내용들이지만 자바스크립트에서는 조금 더 신경써서 봐야하는데요,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제부터 그 이유를 살펴보도록 하죠...!!!!!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;❓ &lt;b&gt;null 데이터 타입이 object...?&lt;/b&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;위에서 말한 것처럼 null은 아무것도 없다는 의미로 대부분 프로그래밍 언어에서는 데이터 타입을 null로 정의합니다.&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;- PHP&lt;/p&gt;
&lt;pre id=&quot;code_1643827746136&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?php
echo gettype(null);
?&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과는 당연히 NULL 로 출력됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;null_php.PNG&quot; data-origin-width=&quot;339&quot; data-origin-height=&quot;76&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cOuvyi/btrspKaVAaX/pWlIGLuQJQmNYxEWc93CaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cOuvyi/btrspKaVAaX/pWlIGLuQJQmNYxEWc93CaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cOuvyi/btrspKaVAaX/pWlIGLuQJQmNYxEWc93CaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOuvyi%2FbtrspKaVAaX%2FpWlIGLuQJQmNYxEWc93CaK%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;339&quot; height=&quot;76&quot; data-filename=&quot;null_php.PNG&quot; data-origin-width=&quot;339&quot; data-origin-height=&quot;76&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;- Java&lt;/p&gt;
&lt;pre id=&quot;code_1643827906580&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		String a = null;

		System.out.println(a);
		System.out.println(a.getClass().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;a라는 변수에 null로 초기화했으니 값을 출력할 땐 당연히 null이 나오겠죠?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가적으로, 자바에서 getClass().getName() 메소드를 활용하여 값의 유형을 가져오려고 하면&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같이 NullPointerException이 발생합니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;null_java.PNG&quot; data-origin-width=&quot;493&quot; data-origin-height=&quot;69&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b8HSIQ/btrr2Thb0ni/F1DO2SaQ05DtSTOesK2cNk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b8HSIQ/btrr2Thb0ni/F1DO2SaQ05DtSTOesK2cNk/img.png&quot; data-alt=&quot;파일명 : test.java&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b8HSIQ/btrr2Thb0ni/F1DO2SaQ05DtSTOesK2cNk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb8HSIQ%2Fbtrr2Thb0ni%2FF1DO2SaQ05DtSTOesK2cNk%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;493&quot; height=&quot;69&quot; data-filename=&quot;null_java.PNG&quot; data-origin-width=&quot;493&quot; data-origin-height=&quot;69&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;파일명 : test.java&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;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;null_javascript1.PNG&quot; data-origin-width=&quot;211&quot; data-origin-height=&quot;108&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cUBVJe/btrr3iHOnEV/2Uvd6mqdaCwZRziqWsnVHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cUBVJe/btrr3iHOnEV/2Uvd6mqdaCwZRziqWsnVHK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cUBVJe/btrr3iHOnEV/2Uvd6mqdaCwZRziqWsnVHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcUBVJe%2Fbtrr3iHOnEV%2F2Uvd6mqdaCwZRziqWsnVHK%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;211&quot; height=&quot;108&quot; data-filename=&quot;null_javascript1.PNG&quot; data-origin-width=&quot;211&quot; data-origin-height=&quot;108&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;null을 object(객체)로 인식합니다......ㄷㄷ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(크롬 개발자도구에서 바로 테스트 가능합니다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이로 인해 아래와 같은 촌극이 벌어지기도 합니다...&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;null_javascript2.PNG&quot; data-origin-width=&quot;209&quot; data-origin-height=&quot;96&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q9CZF/btrslVquZHg/LikaM25mrKF6woyqCUkkM0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q9CZF/btrslVquZHg/LikaM25mrKF6woyqCUkkM0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q9CZF/btrslVquZHg/LikaM25mrKF6woyqCUkkM0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq9CZF%2FbtrslVquZHg%2FLikaM25mrKF6woyqCUkkM0%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;209&quot; height=&quot;96&quot; data-filename=&quot;null_javascript2.PNG&quot; data-origin-width=&quot;209&quot; data-origin-height=&quot;96&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이는 자바스크립트 엔진의 버그로 수정을 했어야 했지만 이미 배포가 어느정도 되어 개발이 완료된 다른 사이트에 영향을 줄 수 있어 수정을 하지 않았다고 하네요... &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;*** 주의 ***&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt; 자바에서도 자바스크립트와 유사한 상황이 있어서 NULL==object 타입이다라는 오해가 많습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1643830373501&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;public class test {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		String a = null;
		
		System.out.println(a);
		System.out.println(&quot;this is &quot; + a);
		System.out.println(a.getClass().getName());

	}

}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 소스코드를 실행했을 때 아래와 같은 결과를 얻을 수 있었는데요&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;null_java_ex1.PNG&quot; data-origin-width=&quot;485&quot; data-origin-height=&quot;83&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9osfR/btrshAm8B34/WWFsPKPEcjaZmI8tQ1u7w0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9osfR/btrshAm8B34/WWFsPKPEcjaZmI8tQ1u7w0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9osfR/btrshAm8B34/WWFsPKPEcjaZmI8tQ1u7w0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9osfR%2FbtrshAm8B34%2FWWFsPKPEcjaZmI8tQ1u7w0%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;485&quot; height=&quot;83&quot; data-filename=&quot;null_java_ex1.PNG&quot; data-origin-width=&quot;485&quot; data-origin-height=&quot;83&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;자바에서 String을 단순히 문자열 저장하는 변수로 생각해서 NULL은 object 타입이다라고 생각하면 절대 안됩니다!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;String 자료형 자체가 클래스(참조) 타입으로 원시 타입인 int, char, float 등과 다른 형태입니다.&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;color: #ee2323;&quot;&gt;원시 타입은 애초에 null로 초기화가 불가능하고, &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;오로지 String, Integer 같은 참조 타입으로만 변수를 null로 초기화가 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;즉, 자료형이 object 형태였던 것이고 이를 println() 메소드에서 null을 object 형태로 치환해준 것 뿐인거죠..!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;(일반적으로 String 자료형을 이용하는 getName(), length(), toUpperCase() 같은 메소드를 적용할 수 없습니다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반면 PHP는 어떤지 한번 볼까요?&lt;/p&gt;
&lt;pre id=&quot;code_1643833026093&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?php
echo gettype(null);
echo '&amp;lt;br&amp;gt;';
echo 'this is ' . null;
?&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;null_php_ex1.PNG&quot; data-origin-width=&quot;339&quot; data-origin-height=&quot;98&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dLt86H/btrsi9piclB/Xkbh1glaly1JnETFwGtKKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dLt86H/btrsi9piclB/Xkbh1glaly1JnETFwGtKKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dLt86H/btrsi9piclB/Xkbh1glaly1JnETFwGtKKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdLt86H%2Fbtrsi9piclB%2FXkbh1glaly1JnETFwGtKKK%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;339&quot; height=&quot;98&quot; data-filename=&quot;null_php_ex1.PNG&quot; data-origin-width=&quot;339&quot; data-origin-height=&quot;98&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이게 정상이랍니다..!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;샛길로 많이 샌 것 같지만 정리하자면 다음과 같습니다!&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;자바스크립트는 null 자체를 object로 인식하는 버그가 있고&lt;br /&gt;이미 버그가 있는 버전으로 짜여진 프로그램들이 많아 수정이 어려울 것이다..!&lt;/blockquote&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;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자바스크립트 개발자라면 모두가 아시는 것처럼 자바스크립트는 세미콜론 자동 삽입 기능이 있는데요..!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이로 인해 아래와 같은 상황이 발생하기도 합니다!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;autoinput2.PNG&quot; data-origin-width=&quot;213&quot; data-origin-height=&quot;350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c2dHN9/btrshyiy5e7/ZckdubCfXaju0zSuhdy9wK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c2dHN9/btrshyiy5e7/ZckdubCfXaju0zSuhdy9wK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c2dHN9/btrshyiy5e7/ZckdubCfXaju0zSuhdy9wK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc2dHN9%2Fbtrshyiy5e7%2FZckdubCfXaju0zSuhdy9wK%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;213&quot; height=&quot;350&quot; data-filename=&quot;autoinput2.PNG&quot; data-origin-width=&quot;213&quot; data-origin-height=&quot;350&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;분명 json_test1() 함수와 json_test2() 함수는 중괄호 위치만 다르고 나머지 내용은 다 똑같습니다만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;함수 호출 시 결과는 완전 딴판이죠?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전문적인 용어로 말씀드리면 json_test1() 함수는 K&amp;amp;R 방식으로,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;json_test2() 함수는 BSD 방식으로 작성되어 있습니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(K&amp;amp;R, BSD 방식에 대한 자세한 내용은 아래 사이트를 참조해주세요✔)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://namu.wiki/w/%EC%BD%94%EB%94%A9%20%EC%8A%A4%ED%83%80%EC%9D%BC&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://namu.wiki/w/%EC%BD%94%EB%94%A9%20%EC%8A%A4%ED%83%80%EC%9D%BC&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;&lt;span style=&quot;color: #ee2323;&quot;&gt;여튼 두 함수를 호출했으나 다른 결과가 발생한 이유는 return에 있습니다!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;json_test2 () 함수가 BSD 방식으로 작성해버리면서 return과 중괄호 { } 사이에 줄바꿈이 발생했는데요,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;이때 return에 세미콜론이 자동으로 붙어버리면서 자바스크립트가 'return;'으로 인식해버렸기 때문입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;이로 인해 아래 중괄호 { key : value }가 적용되지 않은 것이죠!&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;자바스크립트에서 'return;'은 'return undefined;'와 같아서&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;json_test2() 함수의 호출 결과는 undefined가 된 것을 확인하실 수 있겠네요..!&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;이렇게 오늘은 javascript의 대표적인 버그들에 대해서 포스팅을 해보았는데요,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포스팅하면서 초기 설계 및 기획의 중요성과 문법 및 오타에 대한 경각심을 다시 한 번 뼈저리게 느끼게 된 것 같아요 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 포스팅은 여기서 이만 마무리하도록 하겠습니다 ㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;감사합니다 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;032&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/032.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/032.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Javascript</category>
      <category>develop</category>
      <category>It</category>
      <category>javascript</category>
      <category>개발</category>
      <category>개발자</category>
      <category>버그</category>
      <category>웹개발</category>
      <category>자바스크립트</category>
      <author>워누</author>
      <guid isPermaLink="true">https://seoneu.tistory.com/45</guid>
      <comments>https://seoneu.tistory.com/45#entry45comment</comments>
      <pubDate>Thu, 3 Feb 2022 08:45:19 +0900</pubDate>
    </item>
    <item>
      <title>[Javascript] for in/for of 반복문 다뤄보기!</title>
      <link>https://seoneu.tistory.com/44</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요 워누입니다 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 자바스크립트에서 배열이나 객체를 더욱 쉽게 다룰 수 있는 반복문인&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;for in 반복문과 for of 반복문에 대하여 포스팅해보고자 합니다.&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;자바(java)의 향상된 for문과 비슷한 내용이며 일전에 제가 포스팅한 적이 있으니 참고하시면 좋을 듯 합니다ㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://seoneu.tistory.com/17&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://seoneu.tistory.com/17&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1642517352605&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[JAVA] JAVA에서 향상된 For문 쓰기!&quot; data-og-description=&quot;안녕하세요 블로거 워누입니다! 어느새 Tistory 블로그를 버려둔지 꽤 시간이 지나버렸네요..ㅎ . 하지만 어떤 계기로 인해 이 블로그를 다시 살리게 되었습니다! 공부한 내용들을 조금씩 올리는 &quot; data-og-host=&quot;seoneu.tistory.com&quot; data-og-source-url=&quot;https://seoneu.tistory.com/17&quot; data-og-url=&quot;https://seoneu.tistory.com/17&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bg4MgU/hyM9uxRDKv/8vhyeW9jCTKoJ55SbK7An0/img.png?width=411&amp;amp;height=260&amp;amp;face=0_0_411_260,https://scrap.kakaocdn.net/dn/bmjZDy/hyM793bACf/KdpOplQyg46uAkOL13pRlk/img.png?width=411&amp;amp;height=260&amp;amp;face=0_0_411_260,https://scrap.kakaocdn.net/dn/bX6ype/hyM73u7bjh/7t6gztKlDzksykQX5Zrh00/img.png?width=411&amp;amp;height=260&amp;amp;face=0_0_411_260&quot;&gt;&lt;a href=&quot;https://seoneu.tistory.com/17&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://seoneu.tistory.com/17&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bg4MgU/hyM9uxRDKv/8vhyeW9jCTKoJ55SbK7An0/img.png?width=411&amp;amp;height=260&amp;amp;face=0_0_411_260,https://scrap.kakaocdn.net/dn/bmjZDy/hyM793bACf/KdpOplQyg46uAkOL13pRlk/img.png?width=411&amp;amp;height=260&amp;amp;face=0_0_411_260,https://scrap.kakaocdn.net/dn/bX6ype/hyM73u7bjh/7t6gztKlDzksykQX5Zrh00/img.png?width=411&amp;amp;height=260&amp;amp;face=0_0_411_260');&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;[JAVA] JAVA에서 향상된 For문 쓰기!&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요 블로거 워누입니다! 어느새 Tistory 블로그를 버려둔지 꽤 시간이 지나버렸네요..ㅎ . 하지만 어떤 계기로 인해 이 블로그를 다시 살리게 되었습니다! 공부한 내용들을 조금씩 올리는&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;seoneu.tistory.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;p data-ke-size=&quot;size16&quot;&gt;자바스크립트에서는 위에서 언급한 것처럼 for in, for of 두가지 방식으로 반복문을 제공하고 있는데요,&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;우선 일반적인 for문으로 구현된 반복문입니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;(html의 &amp;lt;script&amp;gt; 부분만 작성했습니다.)&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1642521438375&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;script&amp;gt;

var array = ['포도', '바나나', '사과', '망고'];

for (var i=0; i&amp;lt;array.length; i++){
	alert(array[i]);
}

&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보시다시피 array 배열안에 있는 요소를 하나씩 출력하는 프로그램이며,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과는 예상하실 수 있다시피 아래 이미지처럼 포도, 바나나, 사과, 망고 순으로 alert 창에 출력됩니다!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;배열_1.PNG&quot; data-origin-width=&quot;456&quot; data-origin-height=&quot;138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1WBDW/btrq9Wjk5eM/y6NKK3zOYU9KAlszlMF660/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1WBDW/btrq9Wjk5eM/y6NKK3zOYU9KAlszlMF660/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1WBDW/btrq9Wjk5eM/y6NKK3zOYU9KAlszlMF660/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1WBDW%2Fbtrq9Wjk5eM%2Fy6NKK3zOYU9KAlszlMF660%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;456&quot; height=&quot;138&quot; data-filename=&quot;배열_1.PNG&quot; data-origin-width=&quot;456&quot; data-origin-height=&quot;138&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;배열_2.PNG&quot; data-origin-width=&quot;457&quot; data-origin-height=&quot;140&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cUMOuV/btrq4rlkKKD/jjByiEc8P5FXyLXdSlSEok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cUMOuV/btrq4rlkKKD/jjByiEc8P5FXyLXdSlSEok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cUMOuV/btrq4rlkKKD/jjByiEc8P5FXyLXdSlSEok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcUMOuV%2Fbtrq4rlkKKD%2FjjByiEc8P5FXyLXdSlSEok%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;457&quot; height=&quot;140&quot; data-filename=&quot;배열_2.PNG&quot; data-origin-width=&quot;457&quot; data-origin-height=&quot;140&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;배열_3.PNG&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;139&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beG9dq/btrq7bn0mam/02m6QkZK7YsjvoZEmS0rU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beG9dq/btrq7bn0mam/02m6QkZK7YsjvoZEmS0rU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beG9dq/btrq7bn0mam/02m6QkZK7YsjvoZEmS0rU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeG9dq%2Fbtrq7bn0mam%2F02m6QkZK7YsjvoZEmS0rU1%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;458&quot; height=&quot;139&quot; data-filename=&quot;배열_3.PNG&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;139&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;배열_4.PNG&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;139&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d2S1aP/btrq5p8pd1H/6r9LzsNzUqrqzY9TUUwctK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d2S1aP/btrq5p8pd1H/6r9LzsNzUqrqzY9TUUwctK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d2S1aP/btrq5p8pd1H/6r9LzsNzUqrqzY9TUUwctK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd2S1aP%2Fbtrq5p8pd1H%2F6r9LzsNzUqrqzY9TUUwctK%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;458&quot; height=&quot;139&quot; data-filename=&quot;배열_4.PNG&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;139&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;이를 for in 반복문으로 구현하면 다음과 같습니다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1642521874306&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;script&amp;gt;

var array = ['포도', '바나나', '사과', '망고'];

for (var i in array) {
	alert(array[i]);
}

&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&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;마지막으로 ECMAScript 6에서 추가된 반복문 문법인 for of 반복문은 아래와 같이 구현할 수 있습니다!&lt;/p&gt;
&lt;pre id=&quot;code_1642522111589&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;script&amp;gt;

for (var array of ['포도', '바나나', '사과', '망고']){
	alert(`${array}`);		
}

&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;for in 반복문과 비슷하지만 반복 변수를 따로 선언하지 않고 배열의 요소들을 직접 입력해주는게 특징입니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가로 for of 반복문은 배열 이외에도 문자열이나 맵(map) 등의 자료형에도 사용할 수 있다고 하네요..!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 세개의 반복문을 잘 숙지하고 있다가 상황에 맞게 잘 사용하면 코드를 더 깔끔하게 작성할 수 있을 것 같습니다ㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘 포스팅한 내용도 누군가에게는 도움이 되었기를 바라며 이만 마무리하겠습니다!&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;014&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/014.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/014.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&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>Javascript</category>
      <category>develop</category>
      <category>for문</category>
      <category>It</category>
      <category>javascript</category>
      <category>개발</category>
      <category>개발자</category>
      <category>반복문</category>
      <category>웹</category>
      <category>웹개발</category>
      <category>자바스크립트</category>
      <author>워누</author>
      <guid isPermaLink="true">https://seoneu.tistory.com/44</guid>
      <comments>https://seoneu.tistory.com/44#entry44comment</comments>
      <pubDate>Wed, 19 Jan 2022 01:29:05 +0900</pubDate>
    </item>
    <item>
      <title>[PHP] 전화번호, 이메일 유효성 검사 :: 정규표현식 활용 (2)</title>
      <link>https://seoneu.tistory.com/43</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;안녕하세요 워누입니다 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지난 포스팅에 이어 오늘은 전화번호와 이메일 데이터에 대하여 정규표현식을 이용해&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유효성을 검사해보는 방법을 포스팅해보겠습니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 전화번호&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전화번호의 유효성을 검사하려면 먼저 전화번호가 어떤 식으로 구성되어야 하는지 알아야겠죠?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 여기서는 우리가 가지고 다니는 휴대전화를 기준으로 설명드리겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전화번호 형식은 &quot;010-0000-0000&quot; 이런 식으로 구성되어 있다는 건 모두 아실거에요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;휴대전화는 앞자리가 대부분 010으로 시작을 합니다만,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예전 폰을 사용하시는 분들은 간혹 011, 016 등도 사용하시더라구요... &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;그래서 앞 세자리는 예전에도 사용했던 번호를 포함해 010, 011, 016, 017, 018, 019까지는 허용하도록 하고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뒤에 특수기호인 하이픈( - )이 온 다음 중간 자리는 숫자 3자리 또는 4자리이며&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 뒤에 특수기호 하이픈이 오고 마지막 자리는 숫자 4자리 고정이라는 형식으로 규칙을 정해봅시다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 규칙을 정했다면 다음은 패턴을 작성해보아야 겠죠?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선 맨 앞 세자리는 010, 011, 016, 017, 018, 019만 허용하는 패턴은 아래와 같습니다.&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;^(010|011|016|017|018|019)&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;u&gt;** OR 연산에 대한 기호로 | 를 사용합니다.&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 다음, 하이픈은 아래와 같이 붙여주시면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;^(010|011|016|017|018|019)-&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자리 혹은 4자리이므로 아래와 같이 패턴을 만들면 되며,&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;[0-9]{3,4}-&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;u&gt;중괄호 {3,4}의 의미는 3, 4 byte를 검사하겠다는 의미입니다.&amp;nbsp;&lt;/u&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;마지막 자리는 숫자 4자리만 오면 되기에 아래와 같이 패턴을 만들면 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(맨 마지막에 오는 문자를 의미하는 기호( $ )를 반드시 붙여줍니다!)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[0-9]{4}$&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 언급한 규칙을 모두 합쳐서 아래와 같이 패턴을 완성하면 됩니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;:: 전화번호 패턴 ::&lt;/b&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;^(010|011|016|017|018|019)-[0-9]{3,4}-[0-9]{4}$&lt;/b&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&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;lt;request.html&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1641929168492&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
 &amp;lt;title&amp;gt; PHP 정규표현식 TEST &amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
 &amp;lt;form method=&quot;post&quot; action=&quot;response.php&quot;&amp;gt;
  &amp;lt;table&amp;gt; 
	&amp;lt;tr&amp;gt;
        &amp;lt;th&amp;gt;전화번호 (000-0000-0000 형식에 맞추어 기입하세요.)&amp;lt;/th&amp;gt;
        &amp;lt;td&amp;gt;&amp;lt;input type=&quot;text&quot; name=&quot;PhoneNo&quot; value=&quot;&quot;&amp;gt;&amp;lt;/td&amp;gt;
    &amp;lt;/tr&amp;gt;
  &amp;lt;/table&amp;gt;
  &amp;lt;input type=&quot;submit&quot; value=&quot;Submit&quot; /&amp;gt;
 &amp;lt;/form&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;response.php&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1641929189678&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?php 

//전달받은 데이터를 변수로 저장 
$phoneNo = $_POST['PhoneNo'];

//전화번호 데이터에 대한 패턴 작성
$phonePattern = '/^(010|011|016|017|018|019)-[0-9]{3,4}-[0-9]{4}$/';


//패턴 체크(유효성 검사)
if(preg_match($phonePattern, $phoneNo, $match)){
	echo &quot;전화번호 : &quot;.$phoneNo.&quot;&amp;lt;br&amp;gt;&quot;;
	var_dump($match);
	echo &quot;&amp;lt;br&amp;gt;&quot;;
} else {
	echo &quot;올바른 전화번호가 아닙니다. 다시 입력해 주세요. &amp;lt;br&amp;gt;&quot;;
}


?&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;테스트&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;정규표현식2편_1.PNG&quot; data-origin-width=&quot;592&quot; data-origin-height=&quot;60&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FHOij/btrqAVMxuTs/1dQHECPhTwNphsz7kspgi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FHOij/btrqAVMxuTs/1dQHECPhTwNphsz7kspgi1/img.png&quot; data-alt=&quot;request.html : 데이터 입력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FHOij/btrqAVMxuTs/1dQHECPhTwNphsz7kspgi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFHOij%2FbtrqAVMxuTs%2F1dQHECPhTwNphsz7kspgi1%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;592&quot; height=&quot;60&quot; data-filename=&quot;정규표현식2편_1.PNG&quot; data-origin-width=&quot;592&quot; data-origin-height=&quot;60&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;request.html : 데이터 입력&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;정규표현식2편_2.PNG&quot; data-origin-width=&quot;504&quot; data-origin-height=&quot;58&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBhmYw/btrqzRYoDJS/vU9g1XSGXUkVavyzXpylx1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBhmYw/btrqzRYoDJS/vU9g1XSGXUkVavyzXpylx1/img.png&quot; data-alt=&quot;response.php : 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBhmYw/btrqzRYoDJS/vU9g1XSGXUkVavyzXpylx1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBhmYw%2FbtrqzRYoDJS%2FvU9g1XSGXUkVavyzXpylx1%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;504&quot; height=&quot;58&quot; data-filename=&quot;정규표현식2편_2.PNG&quot; data-origin-width=&quot;504&quot; data-origin-height=&quot;58&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;response.php : 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. 이메일&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번엔 이메일의 유효성 검사를 정규표현식을 이용하여 검사해보도록 합시다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이메일은 보편적으로 &quot;ID@domain&quot; 형식으로 구성되어 있는데요,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ID를 영문 소문자, 숫자만 허용하는지 혹은 특수기호를 사용할 수 있는지 등 생성 규칙이 개발자 마음대로인지라,&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;우선 여기서는 ID의 허용 범위를 영문(소문자, 대문자 모두 포함), 숫자, 하이픈, 언더바( _ )까지만&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;^[a-zA-Z0-9]{1}[a-zA-Z0-9\-_]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대괄호 [] 안에서 하이픈은 범위를 정하는 기호이다 보니 문자 그대로를 사용하려면 백슬래시( \ )를 사용해야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아이디 다음에는 @가 고정값이므로 아이디 패턴 뒤에 붙여주면 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@ 다음에는 gmail.com이나 naver.com처럼 도메인 형식이 와야 하죠?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 언급한 gmail이나 네이버(naver)처럼 간단하면 좋겠지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가끔씩 하이픈이 있는 도메인을 보신 적이 있으실 거에요..!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도메인은 영문 소문자와 숫자 그리고 하이픈이 포함될 수 있지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하이픈은 첫글자와 마지막에는 위치할 수가 없다는 특징이 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;[a-z0-9]{1}[a-z0-9\-]+[a-z0-9]{1}\.&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;도메인의 뒷부분은 com, net, io, co.kr 등 여러 가지가 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이것 역시 처음과 끝에 점이 위치하지 않아야 하고 이외에는 영문 소문자로만 구성되어야 하는 규칙을 준수하여&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같이 패턴을 작성할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(([a-z]{1}[a-z.]+[a-z]{1})|([a-z]+))$&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&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;^[a-zA-Z0-9]{1}[a-zA-Z0-9\-_]@[a-z0-9]{1}[a-z0-9\-]+[a-z0-9]{1}\.(([a-z]{1}[a-z.]+[a-z]{1})|([a-z]+))$&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;....&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상당히 길긴 하군요..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;샘플 소스도 함께 보도록 하죠 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;request.html&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1641994293966&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
 &amp;lt;title&amp;gt; PHP 정규표현식 TEST &amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
 &amp;lt;form method=&quot;post&quot; action=&quot;response.php&quot;&amp;gt;
  &amp;lt;table&amp;gt; 
	&amp;lt;tr&amp;gt;
        &amp;lt;th&amp;gt;이메일&amp;lt;/th&amp;gt;
        &amp;lt;td&amp;gt;&amp;lt;input type=&quot;text&quot; name=&quot;Email&quot; value=&quot;&quot;&amp;gt;&amp;lt;/td&amp;gt;
    &amp;lt;/tr&amp;gt;
  &amp;lt;/table&amp;gt;
  &amp;lt;input type=&quot;submit&quot; value=&quot;Submit&quot; /&amp;gt;
 &amp;lt;/form&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;response.php&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1641994689426&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?php 

//전달받은 데이터를 변수로 저장 
$email = $_POST['Email'];

//이메일 데이터에 대한 패턴 작성
$emailPattern = '/^[a-zA-Z0-9]{1}[a-zA-Z0-9\-_]+@[a-z0-9]{1}[a-z0-9\-]+[a-z0-9]{1}\.(([a-z]{1}[a-z.]+[a-z]{1}[a-z]+)|([a-z]+))$/';


//패턴 체크(유효성 검사)
if(preg_match($emailPattern, $email, $match)){
	echo &quot;이메일 : &quot;.$email.&quot;&amp;lt;br&amp;gt;&quot;;
	var_dump($match);
	echo &quot;&amp;lt;br&amp;gt;&quot;;
} else {
	echo &quot;올바른 이메일이 아닙니다. 다시 입력해 주세요. &amp;lt;br&amp;gt;&quot;;
}

?&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;테스트&amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;정규표현식2편_3.PNG&quot; data-origin-width=&quot;240&quot; data-origin-height=&quot;51&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/L2Nnh/btrqCTUZxdt/P4rYvIJ9j3A2ukSrvpkBtK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/L2Nnh/btrqCTUZxdt/P4rYvIJ9j3A2ukSrvpkBtK/img.png&quot; data-alt=&quot;request.html : 데이터 입력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/L2Nnh/btrqCTUZxdt/P4rYvIJ9j3A2ukSrvpkBtK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FL2Nnh%2FbtrqCTUZxdt%2FP4rYvIJ9j3A2ukSrvpkBtK%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;240&quot; height=&quot;51&quot; data-filename=&quot;정규표현식2편_3.PNG&quot; data-origin-width=&quot;240&quot; data-origin-height=&quot;51&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;request.html : 데이터 입력&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;정규표현식2편_4.PNG&quot; data-origin-width=&quot;659&quot; data-origin-height=&quot;56&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Wfwj9/btrqyrscn5b/tkfB9P24FIhUQwGqF8FNQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Wfwj9/btrqyrscn5b/tkfB9P24FIhUQwGqF8FNQ0/img.png&quot; data-alt=&quot;response.php 데이터 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Wfwj9/btrqyrscn5b/tkfB9P24FIhUQwGqF8FNQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWfwj9%2Fbtrqyrscn5b%2FtkfB9P24FIhUQwGqF8FNQ0%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;659&quot; height=&quot;56&quot; data-filename=&quot;정규표현식2편_4.PNG&quot; data-origin-width=&quot;659&quot; data-origin-height=&quot;56&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;response.php 데이터 결과&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;위와 같이 전화번호와 이메일을 정규표현식을 이용해서 검증하는 방법을 알아보았는데요,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실.. PHP에서는 사실 이메일을 굳이 정규표현식으로 검증하지 않아도 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;filter_var()이라는 함수를 이용해서도 이메일을 아래와 같이 검증을 할 수 있거든요!&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;lt;response.php&amp;gt;&lt;/p&gt;
&lt;pre id=&quot;code_1641997754560&quot; class=&quot;php&quot; data-ke-language=&quot;php&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;?php 

//전달받은 데이터를 변수로 저장 
$email = $_POST['Email'];

//이메일 유효성 검사
if(filter_var($email, FILTER_VALIDATE_EMAIL)){
	echo &quot;이메일 : &quot;.$email.&quot;&amp;lt;br&amp;gt;&quot;;
} else {
	echo &quot;올바른 이메일이 아닙니다. 다시 입력해 주세요. &amp;lt;br&amp;gt;&quot;;
}

?&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 소소코드로 다시 적어서 테스트하셔도 똑같이 이메일을 검증할 수 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;filter_var() 함수에 대하여는 기회가 되면 따로 포스팅 해보도록 하겠습니다!&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;정규표현식은 PHP 외 다른 언어에서도 자주 쓰이니 알고 계시면 좋습니다만..&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 아직까지는 전 회사에서 써먹어본 경험은 없네요 &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정규표현식에 대하여 문법이나 예시, 개념 등을 자세히 알고 싶은 분들 혹은 실무에서 사용하셔야 되는 분들은&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전 포스팅에서도 언급했지만 위키 백과에서도 자세히 나와있으니 참고하시면 도움이 될 거에요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D&quot;&gt;https://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D&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;읽어주신 분들께서 도움이 되었기를 바라며,&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;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;niniz&quot; data-emoticon-name=&quot;010&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/010.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/010.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>PHP</category>
      <category>develop</category>
      <category>HTML</category>
      <category>It</category>
      <category>php</category>
      <category>개발자</category>
      <category>공대생</category>
      <category>웹</category>
      <category>웹개발</category>
      <category>정규식</category>
      <category>정규표현식</category>
      <author>워누</author>
      <guid isPermaLink="true">https://seoneu.tistory.com/43</guid>
      <comments>https://seoneu.tistory.com/43#entry43comment</comments>
      <pubDate>Wed, 12 Jan 2022 23:35:55 +0900</pubDate>
    </item>
  </channel>
</rss>