<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>eunhye_k.log</title>
        <link>https://velog.io/</link>
        <description>UI/UX 디자인을 공부하는 퍼블리셔 입니다 (●'◡'●) </description>
        <lastBuildDate>Tue, 15 Nov 2022 13:43:09 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>eunhye_k.log</title>
            <url>https://images.velog.io/images/eunhye_k/profile/977597fe-e459-411d-88ce-4b6d2d023ca8/social.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. eunhye_k.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/eunhye_k" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[정삼각형 별찍기]]></title>
            <link>https://velog.io/@eunhye_k/%EC%A0%95%EC%82%BC%EA%B0%81%ED%98%95-%EB%B3%84%EC%B0%8D%EA%B8%B0</link>
            <guid>https://velog.io/@eunhye_k/%EC%A0%95%EC%82%BC%EA%B0%81%ED%98%95-%EB%B3%84%EC%B0%8D%EA%B8%B0</guid>
            <pubDate>Tue, 15 Nov 2022 13:43:09 GMT</pubDate>
            <description><![CDATA[<h1 id="문제">문제</h1>
<p>정삼각형 모양의 별을 찍어보세요.</p>
<h1 id="풀이">풀이</h1>
<p>!codepen[eun-hye-kim/embed/wvXqWej?default-tab=html%2Cresult]</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[소수 구하기]]></title>
            <link>https://velog.io/@eunhye_k/%EC%86%8C%EC%88%98-%EA%B5%AC%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@eunhye_k/%EC%86%8C%EC%88%98-%EA%B5%AC%ED%95%98%EA%B8%B0</guid>
            <pubDate>Tue, 15 Nov 2022 13:35:56 GMT</pubDate>
            <description><![CDATA[<h1 id="문제">문제</h1>
<p>1 ~ 255 까지의 <strong>소수</strong>를 구하세요.
※ 소수: 약수가 1, 자기자신 밖에 없는 수 1은 소수가 아닙니다.</p>
<h1 id="풀이">풀이</h1>
<p>!codepen[eun-hye-kim/embed/dyKNmbd?default-tab=html%2Cresult]</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[JavaScript 계산기 만들기]]></title>
            <link>https://velog.io/@eunhye_k/JavaScript-%EA%B3%84%EC%82%B0%EA%B8%B0-%EB%A7%8C%EB%93%A4%EA%B8%B0</link>
            <guid>https://velog.io/@eunhye_k/JavaScript-%EA%B3%84%EC%82%B0%EA%B8%B0-%EB%A7%8C%EB%93%A4%EA%B8%B0</guid>
            <pubDate>Mon, 07 Nov 2022 04:04:16 GMT</pubDate>
            <description><![CDATA[<h1 id="문제">문제</h1>
<p>2개의 정수를 입력 받아 사칙연산을 하는 함수를 작성해주세요.</p>
<h1 id="풀이">풀이</h1>
<p>!codepen[eun-hye-kim/embed/eYKzqGq?default-tab=html%2Cresult]</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[JavaScript 반복문을 사용한 구구단]]></title>
            <link>https://velog.io/@eunhye_k/JavaScript-%EB%B0%98%EB%B3%B5%EB%AC%B8%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%EA%B5%AC%EA%B5%AC%EB%8B%A8</link>
            <guid>https://velog.io/@eunhye_k/JavaScript-%EB%B0%98%EB%B3%B5%EB%AC%B8%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%EA%B5%AC%EA%B5%AC%EB%8B%A8</guid>
            <pubDate>Mon, 07 Nov 2022 04:01:16 GMT</pubDate>
            <description><![CDATA[<h1 id="문제">문제</h1>
<p>반복문을 사용하여 2단부터 9단까지 구구단을 출력하세요.</p>
<h1 id="풀이">풀이</h1>
<p>!codepen[eun-hye-kim/embed/oNyLrmg?default-tab=html%2Cresult]</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[JavaScript 반복문을 사용한 별찍기]]></title>
            <link>https://velog.io/@eunhye_k/JavaScript-%EB%B0%98%EB%B3%B5%EB%AC%B8%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%EB%B3%84%EC%B0%8D%EA%B8%B0</link>
            <guid>https://velog.io/@eunhye_k/JavaScript-%EB%B0%98%EB%B3%B5%EB%AC%B8%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%9C-%EB%B3%84%EC%B0%8D%EA%B8%B0</guid>
            <pubDate>Mon, 07 Nov 2022 03:58:13 GMT</pubDate>
            <description><![CDATA[<h1 id="문제">문제</h1>
<p>반복문을 사용한 별찍기 5줄을 출력하세요.</p>
<h1 id="출력">출력</h1>
<pre><code class="language-javaxcript">*
**
***
****
*****</code></pre>
<h1 id="풀이">풀이</h1>
<p>!codepen[eun-hye-kim/embed/xxzOopB?default-tab=html%2Cresult]</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[ React ]]]></title>
            <link>https://velog.io/@eunhye_k/React</link>
            <guid>https://velog.io/@eunhye_k/React</guid>
            <pubDate>Wed, 14 Sep 2022 11:56:45 GMT</pubDate>
            <description><![CDATA[<h1 id="jsx">JSX</h1>
<p><code>JSX</code>는 <code>자바스크립트</code>를 <code>확장한 문법</code>으로 <code>HTML</code>문법과 <code>흡사</code>한 문법을 사용하기 때문에 UI 작업시 보다 시각적으로 편리하게 작업을 할 수 있다.</p>
<p>!codepen[eun-hye-kim/embed/OJZPbON?default-tab=html%2Cresult]</p>
<p><code>babel</code>이란 <code>자바스크립트 컴파일러</code>로 <code>babel</code>을 이용하면 <code>ES6</code> 이상의 최신 문법을 <code>ES5</code> 이하의 예전 문법 형태로 변경할 수 있다. 이를 통해 최신 문법들이 적용되지 않은 브라우저에서도 정상적으로 작동할 수 있게 만들어준다.</p>
<ul>
<li>컴포넌트 첫글자는 대문자로 표기해야 한다.</li>
<li>class는 className으로 표기해야 한다.</li>
<li>for은 htmlFor로 표기해야 한다.</li>
</ul>
<pre><code class="language-javascript">  funtion(){
      retutn()
  }</code></pre>
<p>는 다음과 같다.</p>
<pre><code class="language-javascript">() =&gt; ()</code></pre>
<p>[!] 함수는 다시 한 번 정리하기로...</p>
<h1 id="state">state</h1>
<p>React는 똑똑해서 리렌더링시 바뀐 부부만 업데이트한다.
동일한 HTML, UI를 다시 만들지 않는다.</p>
<p>useState란?</p>
<pre><code class="language-javascript">    const [값, 함수이름] = React.useState(값);</code></pre>
<h2 id="🤔">🤔</h2>
<p>!codepen[eun-hye-kim/embed/PoeGYYm?default-tab=html%2Cresult]</p>
<h2 id="🙂">🙂</h2>
<p>!codepen[eun-hye-kim/embed/bGMwbYK?default-tab=html%2Cresult]</p>
<p>array 이름 지정하기</p>
<blockquote>
<p><a href="https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment">https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment</a></p>
</blockquote>
<h2 id="🤔-1">🤔</h2>
<pre><code class="language-javascript">    const color = [&#39;blue&#39;,&#39;green&#39;,&#39;white&#39;];
    const blue = color[0];
    const green = color[1];
    const white = color[2];</code></pre>
<h2 id="🙂-1">🙂</h2>
<pre><code class="language-javascript">    const color = [&#39;blue&#39;,&#39;green&#39;,&#39;white&#39;];
    const [blue, green, white] = color;</code></pre>
<p>컴포넌트를 활용한 단위 변환기 만들기!
!codepen[eun-hye-kim/embed/qBYaQWq?default-tab=html%2Cresult]</p>
<h1 id="props">Props</h1>
<p>아규먼트 처럼 부모 컴포넌트로 부터 자식 컴포넌트에 데이터를 보낼 수 있게 해주는 방법이다.</p>
<p>button style 동일한 컴포넌트 만들기!</p>
<h2 id="🤔-2">🤔</h2>
<p>!codepen[eun-hye-kim/embed/eYrBGoa?default-tab=html%2Cresult]</p>
<h2 id="🙂-2">🙂</h2>
<p>!codepen[eun-hye-kim/embed/bGMBLGg?default-tab=html%2Cresult]</p>
<h1 id="memo">Memo</h1>
<p><code>React.memo()</code>를 사용하면 prop의 변경이 일어난 부분만 리렌더링 시킬 수 있다.
!codepen[eun-hye-kim/embed/yLjoNmM?default-tab=html%2Cresult]</p>
<h1 id="es6">ES6</h1>
<p>import
ixport
module</p>
<h1 id="useeffect">useEffect</h1>
<p>코드의 실행 시점을 관리할 수 있는 선택권을 얻는 방어막 같은 존재, 디펜던시가 없을 경우 최초 1회 실행, 있을 경우 해당 값이 변할 경우 실행한다. 이 때 디펜던시는 여러개 입력이 가능하다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[👀]]></title>
            <link>https://velog.io/@eunhye_k/3e1wkx46</link>
            <guid>https://velog.io/@eunhye_k/3e1wkx46</guid>
            <pubDate>Wed, 31 Aug 2022 14:06:35 GMT</pubDate>
            <description><![CDATA[<h2 id="throttle--debounce">throttle / debounce</h2>
<ul>
<li><a href="https://www.zerocho.com/category/JavaScript/post/59a8e9cb15ac0000182794fa">https://www.zerocho.com/category/JavaScript/post/59a8e9cb15ac0000182794fa</a></li>
</ul>
<h2 id="settimeout--setinterval">setTimeout / setInterval</h2>
<ul>
<li><a href="https://ko.javascript.info/settimeout-setinterval">https://ko.javascript.info/settimeout-setinterval</a></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[Ajax]]></title>
            <link>https://velog.io/@eunhye_k/Ajax</link>
            <guid>https://velog.io/@eunhye_k/Ajax</guid>
            <pubDate>Tue, 17 May 2022 16:16:57 GMT</pubDate>
            <description><![CDATA[<h2 id="💡-ajax-asynchronous-javascript-and-xml란">💡 Ajax (Asynchronous JavaScript and XML)란?</h2>
<p>Ajax는 빠르게 동작하는 동적인 웹 페이지를 만들기 위한 개발 기법의 하나입니다.
Ajax를 사용하면 웹 페이지 전체를 다시 로딩하지 않고도, 웹 페이지의 일부분만을 갱신할 수 있습니다.
즉 Ajax를 이용하면 백그라운드 영역에서 서버와 통신하여, 그 결과를 웹 페이지의 일부분에만 표시할 수 있습니다.</p>
<p>이때 서버와는 다음과 같은 다양한 형태의 데이터를 주고받을 수 있습니다.</p>
<blockquote>
</blockquote>
<ul>
<li>JSON<ul>
<li>XML</li>
<li>HTML</li>
<li>텍스트 파일 등</li>
</ul>
</li>
</ul>
<br>

<h2 id="💡-ajax의-장점">💡 Ajax의 장점</h2>
<ul>
<li>웹 페이지 전체를 다시 로딩하지 않고도, 웹 페이지의 일부분만을 갱신할 수 있습니다.</li>
<li>웹 페이지가 로드된 후에 서버로 데이터 요청을 보낼 수 있습니다.</li>
<li>웹 페이지가 로드된 후에 서버로부터 데이터를 받을 수 있습니다.</li>
<li>백그라운드 영역에서 서버로 데이터를 보낼 수 있습니다.</li>
</ul>
<br>

<h2 id="💡-ajax의-한계">💡 Ajax의 한계</h2>
<ul>
<li>Ajax는 클라이언트가 서버에 데이터를 요청하는 클라이언트 풀링 방식을 사용하므로, 서버 푸시 방식의 실시간 서비스는 만들 수 없습니다.</li>
<li>Ajax로는 바이너리 데이터를 보내거나 받을 수 없습니다.</li>
<li>Ajax 스크립트가 포함된 서버가 아닌 다른 서버로 Ajax 요청을 보낼 수는 없습니다.</li>
<li>클라이언트의 PC로 Ajax 요청을 보낼 수는 없습니다.</li>
</ul>
<br>

<h2 id="💡-ajax-프레임워크">💡 Ajax 프레임워크</h2>
<ul>
<li>Prototype</li>
<li>script.aculo.us</li>
<li>dojo</li>
<li><code>jQuery 🍎</code></li>
</ul>
<br>

<h2 id="👋-마치며">👋 마치며</h2>
<p>스터디 활동을 위해 기록하고 있습니다.
다르거나 추가해야할 내용이 있다면 언제든지 코멘트 남겨주세요 :)</p>
<p>✉ <a href="mailto:dmsp1234@gmail.com">dmsp1234@gmail.com</a>
<br></p>
<h2 id="📍-참고">📍 참고</h2>
<hr>
<ul>
<li><a href="http://www.tcpschool.com/ajax/ajax_intro_basic">http://www.tcpschool.com/ajax/ajax_intro_basic</a></li>
</ul>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[Content-Type]]></title>
            <link>https://velog.io/@eunhye_k/Content-Type%EC%9D%98-%EC%9D%B4%ED%95%B4</link>
            <guid>https://velog.io/@eunhye_k/Content-Type%EC%9D%98-%EC%9D%B4%ED%95%B4</guid>
            <pubDate>Mon, 16 May 2022 21:28:16 GMT</pubDate>
            <description><![CDATA[<h2 id="💡-content-type-이란">💡 Content-Type 이란?</h2>
<p>Content-Type은 응답 내용의 타입이 무엇인지 반환하거나 <code>POST</code>를 할 때 <code>Body</code>에 넣는 <code>값</code>이 <code>어떤 데이터 타입인지</code>를 명시하는 등 컨텐츠 유형이 실제로 무엇인지를 나타내는 역할을 합니다. 이 값은 <code>표준 mime-type</code> 중 하나에 속합니다.</p>
<br>

<h2 id="💡-content-type-문법">💡 Content-Type 문법</h2>
<pre><code>Content-Type: Type&gt;; charset등 옵션;

Content-Type: text/html; charset=utf-8;
Content-Type: multipart/form-data; boundary=something;</code></pre><br>

<h2 id="💡-content-type-종류">💡 Content-Type 종류</h2>
<style>
  table tr td:first-child {text-align:center;}
  table tr th, table tr td {border:1px solid #333;}
</style>

<table>
  <tr>
      <th>구분</th>
      <th>타입(Type)</th>
      <th>비고</th>
  </tr>
    <tr>
        <td>Multipart Related</td>
        <td>Multipart/related</td>
        <td>기본 값</td>
    </tr>
    <tr>
        <td rowspan="6">XML Media</td>
        <td>text/xml</td>
        <td>xml 데이터</td>
    </tr>
    <tr>
        <td></td>
        <td>Application/xml</td>
        <td></td>
    </tr>
    <tr>
        <td></td>
        <td>Applcatoin/xml-external-parsed-entity</td>
        <td></td>
    </tr>
    <tr>
        <td></td>
        <td>xml-dtd</td>
        <td></td>
    </tr>
    <tr>
        <td></td>
        <td>mathtml+xml</td>
        <td></td>
    </tr>
    <tr>
        <td></td>
        <td>xslt-xml</td>
        <td></td>
    </tr>
    <tr>
        <td rowspan="7">Application</td>
        <td>Application/EDI-X12<br>Application/EDIFACT</td>
        <td>RFC 1767에서 정의</td>
    </tr>
    <tr>
        <td></td>
        <td>Application/javascript</td>
        <td>RFC 4329에서 정의</td>
    </tr>
    <tr>
        <td></td>
        <td>Application/octet-stream</td>
        <td>기본 미디어 타입은 운영체제 실행파일, 다운로드 의미</td>
    </tr>
    <tr>
        <td></td>
        <td>Application/ogg</td>
        <td>RFC 3534에서 정의</td>
    </tr>
    <tr>
        <td></td>
        <td>Application/x-shockwave-flash</td>
        <td>어도비 플래시 파일</td>
    </tr>
    <tr>
        <td></td>
        <td>Application/json</td>
        <td>json 데이터</td>
    </tr>
    <tr>
        <td></td>
        <td>Application/x-www-form-urlencode</td>
        <td>HTML Form 형태 (대용량 바이너리)</td>
    </tr>
    <tr>
        <td rowspan="4">multipart</td>
        <td>multipart/formed-data</td>
        <td>HTML 폼 형태 (첨부파일 용)</td>
    </tr>
    <tr>
        <td></td>
        <td>multipart/mixed: MIME E-mail</td>
        <td>서로 다른 데이터 형식 혼합</td>
    </tr>
    <tr>
        <td></td>
        <td>multipart/alternative: MIME E-mail</td>
        <td>MIME multipart는 전자메일의 본문을 여러개로 분할하기 위한 방법 정의</td>
    </tr>
    <tr>
        <td></td>
        <td>multipart/related: MIME E-mail</td>
        <td></td>
    </tr>
    <tr>
        <td rowspan="3">Audio</td>
        <td>audio/mpeg</td>
        <td>MP3 등 MPEG audio</td>
    </tr>
    <tr>
        <td></td>
        <td>audio/x-ms-wma</td>
        <td>윈도우 미디어 오디오</td>
    </tr>
    <tr>
        <td></td>
        <td>audio/vnd.rn-realaudio</td>
        <td>RealAudio</td>
    </tr>
    <tr>
        <td rowspan="7">TEXT</td>
        <td>text/css</td>
        <td>css 데이터</td>
    </tr>
    <tr>
        <td></td>
        <td>text/html</td>
        <td>html 데이터</td>
    </tr>
    <tr>
        <td></td>
        <td>text/csv</td>
        <td>csv 형식의 데이터</td>
    </tr>
    <tr>
        <td></td>
        <td>text/javascript</td>
        <td>자바스크립트 데이터</td>
    </tr>
    <tr>
        <td></td>
        <td>text/xml</td>
        <td>xml 데이터</td>
    </tr>
    <tr>
        <td></td>
        <td>text/plain</td>
        <td>텍스트 데이터</td>
    </tr>
    <tr>
        <td></td>
        <td>text/xsl</td>
        <td>XML 표현 방식 지정</td>
    </tr>
    <tr>
        <td rowspan="5">File</td>
        <td>application/msword</td>
        <td>doc</td>
    </tr>
    <tr>
        <td></td>
        <td>application/pdf</td>
        <td>pdf</td>
    </tr>
    <tr>
        <td></td>
        <td>application/vnd.ms-excel</td>
        <td>xls</td>
    </tr>
    <tr>
        <td></td>
        <td>application/zip</td>
        <td>zip</td>
    </tr>
    <tr>
        <td></td>
        <td>image/jpeg</td>
        <td>jpeg, jpg, jpe</td>
    </tr>
</table>

<br>

<h2 id="👋-마치며">👋 마치며</h2>
<p>스터디 활동을 위해 기록하고 있습니다.
다르거나 추가해야할 내용이 있다면 언제든지 코멘트 남겨주세요 :)</p>
<p>✉ <a href="mailto:dmsp1234@gmail.com">dmsp1234@gmail.com</a>
<br></p>
<h2 id="📍-참고">📍 참고</h2>
<hr>
<ul>
<li><a href="https://juyoung-1008.tistory.com/4">https://juyoung-1008.tistory.com/4</a></li>
<li><a href="https://m.blog.naver.com/dsz08082/222482792610">https://m.blog.naver.com/dsz08082/222482792610</a></li>
</ul>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[JSON]]></title>
            <link>https://velog.io/@eunhye_k/JSON-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@eunhye_k/JSON-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0</guid>
            <pubDate>Sun, 15 May 2022 15:51:54 GMT</pubDate>
            <description><![CDATA[<h2 id="💡-jsonjavascript-object-notation이란">💡 JSON(JavaScript Object Notation)이란?</h2>
<p>JSON은 사람이 읽을 수 있는 텍스트 기반의 데이터 교환 표준입니다.</p>
<blockquote>
</blockquote>
<ul>
<li>JSON은 자바스크립트를 확장하여 만들어졌습니다.</li>
<li>JSON은 자바스크립트 객체 표기법을 따릅니다.</li>
<li>JSON은 사람과 기계가 모두 읽기 편하도록 고안되었습니다.</li>
<li>JSON은 프로그래밍 언어와 운영체제에 독립적입니다.</li>
</ul>
<br>

<h2 id="💡-json-문법">💡 JSON 문법</h2>
<h3 id="1-리터럴literal">1. 리터럴(literal)</h3>
<p>리터럴(literal)은 변수와 다르게 해석되는 <code>값 그 자체</code>를 의미합니다.</p>
<pre><code>12     // 숫자 리터럴
&quot;JSON&quot; // 문자열 리터럴
true   // 불리언 리터럴</code></pre><br>

<h3 id="2-객체object">2. 객체(object)</h3>
<p>객체란 <code>이름(key)</code>과 <code>값(value)</code>으로 구성된 프로퍼티(property)의 정렬되지 않은 집합입니다.</p>
<pre><code>{
  &quot;employees&quot;: [
    {
      &quot;name&quot;: &quot;Surim&quot;,
      &quot;lastName&quot;: &quot;Son&quot;
    },
    {
      &quot;name&quot;: &quot;Someone&quot;,
      &quot;lastName&quot;: &quot;Huh&quot;
    },
    {
      &quot;name&quot;: &quot;Someone else&quot;,
      &quot;lastName&quot;: &quot;Kim&quot;
    } 
  ]
}</code></pre><ul>
<li>JSON 형식은 자바스크립트 객체와 마찬가지로 <code>key/value</code>가 존재할 수 있으며 key값이나 문자열은 항상 <code>쌍따옴표</code>를 이용하여 표기해야합니다.</li>
<li><code>객체</code>, <code>배열</code> 등의 표기를 사용할 수 있습니다.</li>
<li>일반 자바스크립트의 객체처럼 원하는 만큼 <code>중첩</code>시켜서 사용할 수도 있습니다.</li>
<li>JSON형식에서는 <code>null</code>, <code>number</code>, <code>string</code>, <code>array</code>, <code>object</code>, <code>boolean</code>을 사용할 수 있습니다.</li>
</ul>
<br>

<h2 id="👋-마치며">👋 마치며</h2>
<p>스터디 활동을 위해 기록하고 있습니다.
다르거나 추가해야할 내용이 있다면 언제든지 코멘트 남겨주세요 :)</p>
<p>✉ <a href="mailto:dmsp1234@gmail.com">dmsp1234@gmail.com</a>
<br></p>
<h2 id="📍-참고">📍 참고</h2>
<hr>
<ul>
<li><a href="http://www.tcpschool.com/json/json_datatype_string">http://www.tcpschool.com/json/json_datatype_string</a></li>
<li><a href="https://velog.io/@surim014/JSON%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80">https://velog.io/@surim014/JSON%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80</a></li>
<li><a href="https://jsonapi.org/">https://jsonapi.org/</a></li>
</ul>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTTP Method]]></title>
            <link>https://velog.io/@eunhye_k/HTTP-Method%EC%9D%98-%EC%9D%B4%ED%95%B4</link>
            <guid>https://velog.io/@eunhye_k/HTTP-Method%EC%9D%98-%EC%9D%B4%ED%95%B4</guid>
            <pubDate>Sun, 15 May 2022 15:23:27 GMT</pubDate>
            <description><![CDATA[<h2 id="💡-rest-representational-state-transfer">💡 REST (Representational State Transfer)</h2>
<blockquote>
</blockquote>
<ul>
<li>자원(Resource): URI</li>
<li><code>행위(Verb): HTTP Method 🍎</code></li>
<li>표현(Representations)</li>
</ul>
<br>

<h2 id="💡-http-method란">💡 HTTP Method란?</h2>
<p>클라이언트가 웹 서버에게 사용자 <code>요청의 목적</code>이나 <code>종류</code>를 알리는 <code>수단</code></p>
<blockquote>
</blockquote>
<p>⭐️ 주요 메소드 5가지</p>
<ul>
<li>GET : 리소스 조회</li>
<li>POST : 요청 데이터 처리, 주로 데이터 등록에 사용</li>
<li>PUT : 리소스를 대체, 해당 리소스가 없으면 생성</li>
<li>PATCH : 리소스를 일부만 변경</li>
<li>DELETE : 리소스 삭제</li>
</ul>
<blockquote>
</blockquote>
<p> 기타 메소드 4가지</p>
<ul>
<li>HEAD: GET과 동일하지만 메시지 부분을 제외하고, 상태 줄과 헤더만 반환</li>
<li>OPTIONS: 대상 리소스에 대한 통신 가능 옵션을 설명(주로 CORS에서 사용)</li>
<li>CONNECT: 대상 자원으로 식별되는 서버에 대한 터널을 설정</li>
<li>TRACE: 대상 리소스에 대한 경로를 따라 메시지 루프백 테스트를 수행</li>
</ul>
<br>

<h3 id="1-get">1. GET</h3>
<p>GET 메소드는 주로 데이터를 <code>읽거나(Read)</code> <code>검색(Retrieve)</code>할 때에 사용되는 메소드이다. 만약에 GET요청이 성공적으로 이루어진다면 XML이나 JSON과 함께 200 (Ok) HTTP 응답 코드를 리턴한다. 에러가 발생하면 주로 404 (Not found) 에러나 400 (Bad request) 에러가 발생한다.</p>
<blockquote>
<p>👉 규칙</p>
</blockquote>
<ul>
<li>HTTP 명세에 의하면 GET 요청은 오로지 데이터를 <code>읽을 때만 사용</code>되고 수정할 때는 사용하지 않는다.</li>
<li>GET 요청은 <code>idempotent 하다.</code> 같은 요청을 여러 번 하더라도 변함없이 항상 같은 응답을 받을 수 있다.</li>
<li>데이터를 변경하는 연산에 사용하면 안된다.</li>
</ul>
<p>ex)</p>
<pre><code>GET /user/1</code></pre><ul>
<li>데이터를 조회하는 것이기 때문에 요청시에 Body 값과 Content-Type 가 비워져있다. 조회할 데이터에 대한 정보는 <code>URL</code>을 통해서 <code>파라미터</code>를 받고 있는 모습을 볼 수 있다.</li>
<li>데이터 조회에 성공한다면 Body 값에 데이터 값을 저장하여 성공 응답을 보낸다.</li>
<li>GET은 캐싱이 가능하여 같은 데이터를 한번 더 조회할 경우에 저장한 값을 사용하여 조회 속도가 빨라진다.</li>
</ul>
<br>

<h3 id="2-post">2. POST</h3>
<p>POST 메소드는 주로 새로운 리소스를 <code>생성(create)</code>할 때 사용된다. 조금 더 구체적으로 POST는 하위 리소스(부모 리소스의 하위 리소스)들을 생성하는데 사용된다. 성공적으로 creation을 완료하면 201 (Created) HTTP 응답을 반환한다.</p>
<blockquote>
<p>👉 규칙</p>
</blockquote>
<ul>
<li>POST 요청은 <code>idempotent 하지 않다.</code> 같은 POST 요청을 반복해서 했을 때 항상 같은 결과물이 나오는 것을 보장하지 않는다</li>
<li>두 개의 같은 POST 요청을 보내면 같은 정보를 담은 두 개의 다른 resource를 반환할 가능성이 높다.</li>
</ul>
<p>ex)</p>
<pre><code>POST /user
body : {date : &quot;example&quot;}
Content-Type : &quot;application/json&quot;</code></pre><ul>
<li>데이터를 생성하는 것이기 때문에 요청시에 <code>Body</code> 값과 Content-Type 값을 작성해야한다. 해당 예시는 JSON을 통해서 작성된 예시이다.</li>
<li>URL을 통해서 데이터를 받지 않고, <code>Body</code> 값을 통해서 받는다.</li>
<li>데이터 조회에 성공한다면 Body 값에 저장한 데이터 값을 저장하여 성공 응답을 보낸다.</li>
</ul>
<br>

<h3 id="3-put">3. PUT</h3>
<p>PUT는 리소스를 <code>생성</code> / <code>업데이트</code>하기 위해 서버로 데이터를 보내는 데 사용됩니다.</p>
<blockquote>
<p>👉 규칙</p>
</blockquote>
<ul>
<li>PUT 요청은 <code>idempotent 합니다.</code></li>
<li>동일한 PUT 요청을 여러 번 호출하면 항상 동일한 결과가 생성됩니다.</li>
</ul>
<p>ex)</p>
<pre><code>PUT /user/1
body : {date : &quot;update example&quot;}
Content-Type : &quot;application/json&quot;</code></pre><ul>
<li>데이터를 수정하는 것이기 때문에 요청시에 Body 값과 Content-Type 값을 작성해야한다. 해당 예시는 JSON을 통해서 작성된 예시이다.</li>
<li><code>URL</code>을 통해서 어떠한 데이터를 수정할지 파라미터를 받는다. 그리고 수정할 데이터 값을 <code>Body</code> 값을 통해서 받는다.</li>
<li>데이터 조회에 성공한다면 Body 값에 저장한 데이터 값을 저장하여 성공 응답을 보낸다.</li>
</ul>
<br>

<h3 id="4-delete">4. DELETE</h3>
<p>DELETE 메서드는 지정된 리소스를 <code>삭제</code>합니다.</p>
<p>ex)</p>
<pre><code>DELETE /user/1</code></pre><ul>
<li>데이터를 삭제하는 것이기 때문에 요청시에 Body 값과 Content-Type 값이 비워져있다.</li>
<li><code>URL</code>을 통해서 어떠한 데이터를 삭제할지 파라미터를 받는다.</li>
<li>데이터 삭제에 성공한다면 Body 값 없이 성공 응답만 보내게 된다.</li>
</ul>
<br>

<h2 id="💡-멱등성idempotence이란">💡 멱등성(Idempotence)이란?</h2>
<p>멱등성이란 <code>여러번 수행해도</code> 결과가 같음을 의미한다. 즉, 호출로 인하여 데이터가 <code>변형이 되지 않는다는 것</code>을 의미한다.</p>
<br>

<h2 id="👋-마치며">👋 마치며</h2>
<p>스터디 활동을 위해 기록하고 있습니다.
다르거나 추가해야할 내용이 있다면 언제든지 코멘트 남겨주세요 :)</p>
<p>✉ <a href="mailto:dmsp1234@gmail.com">dmsp1234@gmail.com</a>
<br></p>
<h2 id="📍-참고">📍 참고</h2>
<hr>
<ul>
<li><a href="https://velog.io/@yh20studio/CS-Http-Method-%EB%9E%80-GET-POST-PUT-DELETE#-rest">https://velog.io/@yh20studio/CS-Http-Method-%EB%9E%80-GET-POST-PUT-DELETE#-rest</a></li>
<li><a href="https://sharplee7.tistory.com/49">https://sharplee7.tistory.com/49</a></li>
</ul>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[MVC 패턴]]></title>
            <link>https://velog.io/@eunhye_k/MVC-%ED%8C%A8%ED%84%B4%EC%9D%98-%EC%9D%B4%ED%95%B4</link>
            <guid>https://velog.io/@eunhye_k/MVC-%ED%8C%A8%ED%84%B4%EC%9D%98-%EC%9D%B4%ED%95%B4</guid>
            <pubDate>Sun, 15 May 2022 14:24:50 GMT</pubDate>
            <description><![CDATA[<h2 id="💡-mvc-패턴이란">💡 MVC 패턴이란?</h2>
<p><code>MVC(model–view–controller)</code>는 소프트웨어 공학에서 사용되는 <code>소프트웨어 디자인 패턴</code>입니다. 이 패턴을 성공적으로 사용하면, <code>사용자 인터페이스</code>로부터 <code>비즈니스 로직</code>을 <code>분리</code>하여 애플리케이션의 시각적 요소나 그 이면에서 실행되는 비즈니스 로직을 <code>서로 영향 없이 쉽게</code> 고칠 수 있는 애플리케이션을 만들 수 있습니다. MVC에서 <code>모델</code>은 애플리케이션의 <code>정보(데이터)</code>를 나타내며, <code>뷰</code>는 텍스트, 체크박스 항목 등과 같은 <code>사용자 인터페이스 요소</code>를 나타내고, <code>컨트롤러</code>는 데이터와 비즈니스 로직 사이의 <code>상호동작을 관리</code>합니다.
<img src="https://velog.velcdn.com/images/eunhye_k/post/2fe62c14-78c0-48c6-b535-162515657c0d/image.png" alt=""></p>
<br>

<h3 id="1-모델-model">1. 모델 (Model)</h3>
<ul>
<li><code>DATA</code>, <code>정보</code>들의 가공을 책임지는 컴포넌트를 의미합니다.</li>
<li>모델(Model)은 어플리케이션의 정보, 데이터를 나타냅니다. 데이타베이스, 처음의 정의하는 상수, 초기화 값, 변수 등을 뜻합니다. 비즈니스 로직을 처리한 후 모델의 변경사항을 컨트롤러와 뷰에 전달합니다.</li>
</ul>
<blockquote>
<p>👉 규칙</p>
</blockquote>
<ul>
<li>사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 합니다.</li>
<li>뷰나 컨트롤러에 대해서 어떤 정보도 알지 말아야 합니다.</li>
<li>변경이 일어나면, 변경 통지에 대한 처리 방법을 구현해야만 합니다.</li>
</ul>
<br>

<h3 id="2-뷰-view">2. 뷰 (View)</h3>
<ul>
<li>사용자에게 보여지는 부분, 즉 <code>유저 인터페이스(User interface)</code>를 의미합니다.</li>
<li>MVC 패턴은 여러 개의 뷰(View)가 존재할 수 있으며, 모델에게 질의하여 데이터를 전달받습니다. 뷰는 받은 데이터를 화면에 표시해주는 역할을 가지고 있으며, 모델에게 전달받은 데이터를 별도로 저장하지 않아야 합니다. 사용자가 화면에 표시된 내용을 변경하게 되면 모델에게 전달하여 모델을 변경해야 합니다.</li>
</ul>
<blockquote>
<p>👉 규칙</p>
</blockquote>
<ul>
<li>모델이 가지고 있는 정보를 따로 저장해서는 안됩니다.</li>
<li>모델이나 컨트롤러와 같이 다른 구성요소들을 몰라야 됩니다.</li>
<li>변경이 일어나면 변경통지에 대한 처리방법을 구현해야만 합니다.</li>
</ul>
<br>

<h3 id="3-컨트롤러-controller">3. 컨트롤러 (Controller)</h3>
<ul>
<li><code>모델(Model)</code>과 <code>뷰(View)</code> 사이를 이어주는 <code>브릿지(Bridge)</code> 역할을 의미합니다.</li>
<li>모델이나 뷰는 서로의 존재를 모르고 있습니다. 변경 사항을 외부로 알리고 수신하는 방법만 있습니다. 컨트롤러(Controller)는 이를 중재하기 위해 모델과 뷰에 대해 알고 있어야 합니다. 모델이나 뷰로부터 변경 내용을 통지 받으면 이를 각 구성 요소에게 통지해야 합니다. 사용자가 어플리케이션을 조작하여 발생하는 변경 이벤트들을 처리하는 역할을 수행합니다.</li>
</ul>
<blockquote>
<p>👉 규칙</p>
</blockquote>
<ul>
<li>모델이나 뷰에 대해서 알고 있어야 합니다.</li>
<li>모델이나 뷰의 변경을 모니터링 해야 합니다.</li>
</ul>
<br>

<h2 id="💡-mvc-패턴의-장점">💡 MVC 패턴의 장점</h2>
<ul>
<li>MVC 패턴을 가진 시스템의 각 컴포넌트는 자신이 맡은 역할만 수행한 후 다른 컴포넌트로 결과만 넘겨주면 되기 때문에 시스템 <code>결합도</code>를 낮출 수 있습니다.</li>
<li><code>유지보수</code> 시에도 특정 컴포넌트만 수정하면 되기 때문에 보다 쉽게 시스템 변경이 가능합니다.</li>
<li>기능별로 코드를 분리하여 하나의 파일에 코드가 모이는 것을 방지하여 코드의 <code>가독성</code>,<code>확장성</code>,<code>재사용성</code>이 증가합니다.</li>
</ul>
<br>

<h2 id="💡-mvc-패턴의-한계">💡 MVC 패턴의 한계</h2>
<p>복잡한 대규모 프로그램의 경우 다수의 뷰와 모델이 컨트롤러를 통해 연결되기 때문에 <code>컨트롤러가 불필요하게 커지는 현상</code>이 발생합니다. 복잡한 화면을 구성하는 경우에도 동일한 현상이 발생하는데 이를 &#39;Massive-View-Controller&#39; 라고 합니다.
<img src="https://velog.velcdn.com/images/eunhye_k/post/79854148-0125-40f4-94dd-9324fee967ae/image.png" alt=""></p>
<br>

<h2 id="💡-그-외-다양한-디자인-패턴">💡 그 외 다양한 디자인 패턴</h2>
<ul>
<li>MVP 패턴</li>
<li>MVVM 패턴</li>
<li>Flux</li>
<li>Redux</li>
<li>RxMVVM</li>
</ul>
<br>

<h2 id="👋-마치며">👋 마치며</h2>
<p>스터디 활동을 위해 기록하고 있습니다.
다르거나 추가해야할 내용이 있다면 언제든지 코멘트 남겨주세요 :)</p>
<p>✉ <a href="mailto:dmsp1234@gmail.com">dmsp1234@gmail.com</a>
<br></p>
<h2 id="📍-참고">📍 참고</h2>
<hr>
<ul>
<li><a href="https://ko.wikipedia.org/wiki/%EB%AA%A8%EB%8D%B8-%EB%B7%B0-%EC%BB%A8%ED%8A%B8%EB%A1%A4%EB%9F%AC">https://ko.wikipedia.org/wiki/%EB%AA%A8%EB%8D%B8-%EB%B7%B0-%EC%BB%A8%ED%8A%B8%EB%A1%A4%EB%9F%AC</a></li>
<li><a href="https://junhyunny.github.io/information/design-pattern/mvc-pattern/">https://junhyunny.github.io/information/design-pattern/mvc-pattern/</a></li>
</ul>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[JavaScript - 날씨정보 API]]></title>
            <link>https://velog.io/@eunhye_k/JavaScript-%EB%82%A0%EC%94%A8%EC%A0%95%EB%B3%B4-API</link>
            <guid>https://velog.io/@eunhye_k/JavaScript-%EB%82%A0%EC%94%A8%EC%A0%95%EB%B3%B4-API</guid>
            <pubDate>Sun, 03 Apr 2022 17:18:30 GMT</pubDate>
            <description><![CDATA[<h2 id="🤷♀️-왜-api-정보가-보이지-않을까">🤷‍♀️ 왜 API 정보가 보이지 않을까?</h2>
<pre><code>{&quot;cod&quot;:401, &quot;message&quot;: &quot;Invalid API key. Please see http://openweathermap.org/faq#error401 for more info.&quot;}</code></pre><ul>
<li>오탈자에 주의하자....<br>
## 완성!
https://api.openweathermap.org/data/2.5/weather?lat=37.3900688&lon=127.1140152&appid=2834387742b25d5393a21e88fee8246a
<br>
!codepen[eun-hye-kim/embed/xxpPvzQ?default-tab=html%2Cresult]
<br>
## API_KEY 보안이슈
> 참고
https://devlog-wjdrbs96.tistory.com/237</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[JavaScript - parentNode / parentElement / stringify /  parse / forEach / filter
]]></title>
            <link>https://velog.io/@eunhye_k/JavaScript-parentNode-parentElement</link>
            <guid>https://velog.io/@eunhye_k/JavaScript-parentNode-parentElement</guid>
            <pubDate>Sun, 03 Apr 2022 16:32:26 GMT</pubDate>
            <description><![CDATA[<h2 id="💡-node와-element">💡 Node와 Element</h2>
<blockquote>
<p>parentNode가 ParentElement보다 상위 개념이다.</p>
</blockquote>
<h3 id="1-parentnode">1. parentNode</h3>
<ul>
<li>Node는 아무 DOM 객체가 될 수 있다.</li>
<li>ex) 내장 DOM 엘리먼트(document, document.body...)</li>
<li>부모 Node를 반환하고 부모가 없는 경우 null을 반환한다.<br> 
### 2. ParentElement</li>
<li>Element는 Node의 특정 Type중 하나이다.</li>
<li>ex) 텍스트 노드, 주석 노드 등(HTML, id, class...)</li>
<li>부모가 없거나 DOM 요소가 아닌경우 경우 null을 반환한다.<br>

</li>
</ul>
<h2 id="💡-stringify와-parse">💡 stringify와 parse</h2>
<h3 id="1-jsonstringify">1. JSON.stringify()</h3>
<ul>
<li>string로 변경하기<br>
### 2. JSON.parse()</li>
<li>array로 변경하기<br>

</li>
</ul>
<h2 id="💡-return과-break">💡 return과 break</h2>
<h3 id="1-return">1. return</h3>
<ul>
<li><p>return을 만나면 실행을 중단하고 함수를 빠져 나온다.</p>
<pre><code class="language-javascript">  function counter() {
    for (var count = 1; ; count++) {  // 무한 반복
      console.log(count + &quot;A&quot;); // 5까지
        if (count === 5) {
          return;
        }
        console.log(count + &quot;B&quot;);  // 4까지
      }
    console.log(count + &quot;C&quot;);  // 절대 나타나지 않음
  }

  counter();

  // 출력:
  // 1A
  // 1B
  // 2A
  // 2B
  // 3A
  // 3B
  // 4A
  // 4B
  // 5A</code></pre>
<br>

</li>
</ul>
<h3 id="2-break">2. break</h3>
<ul>
<li><p>break을 만나면 실행을 중단하고 구문을 빠져나와 다음 구문으로 프로그램 제어를 넘긴다.</p>
<pre><code class="language-javascript">  outer_block: {
    inner_block: {
      console.log(&#39;1&#39;); // 1
      console.log(&#39;:-(&#39;); // :-(
      }
    console.log(&#39;2&#39;); // 2
  }
  // 출력
  // 1
  // :-(
  // 2

  outer_block: {
    inner_block: {
      console.log(&#39;1&#39;); // 1
      break inner_block; // inner_block를 빠져나옴
      console.log(&#39;:-(&#39;); // 건너뜀
    }
    console.log(&#39;2&#39;); // 2
  }

  // 출력
  // 1
  // 2

  outer_block: {
    inner_block: {
      console.log(&#39;1&#39;); // 1
      break outer_block; // inner_block과 outer_block 둘다 빠져나옴
      console.log(&#39;:-(&#39;); // 건너뜀
    }
    console.log(&#39;2&#39;); // 건너뜀
  }
  // 출력
  // 1</code></pre>
<br>

</li>
</ul>
<h2 id="💡-foreach">💡 forEach</h2>
<ul>
<li>array의 요소들을 반복하여 작업 수행<br>

</li>
</ul>
<h2 id="💡-filter">💡 filter</h2>
<ul>
<li>boolean을 사용하여 값 반환</li>
<li>array의 item을 유지하고 싶은 경우 true를 return<br>

</li>
</ul>
<h2 id="💡-parseint">💡 parseInt</h2>
<ul>
<li>숫자로 변경하여 값 반환하기<br>

</li>
</ul>
<h2 id="💡-todo-list-만들기">💡 ToDo List 만들기</h2>
<p>!codepen[eun-hye-kim/embed/ExobMLm?default-tab=html%2Cresult]</p>
<h3 id="1-">1. =&gt;</h3>
<pre><code class="language-javascript">fonction sayHello(item) {
    console.log(&quot;this is the turn of&quot;, item);
}

(item) =&gt; console.log(&quot;this is the turn of&quot;, item);</code></pre>
<ul>
<li>위/아래 모두 동일한 결과값을 반환함<br>

</li>
</ul>
<h2 id="👋-마치며">👋 마치며</h2>
<p>스터디 활동을 위해 기록하고 있습니다.
다르거나 추가해야할 내용이 있다면 언제든지 코멘트 남겨주세요 :)</p>
<p>✉ <a href="mailto:dmsp1234@gmail.com">dmsp1234@gmail.com</a>
<br></p>
<h2 id="📍-참고">📍 참고</h2>
<hr>
<ul>
<li><a href="https://nomadcoders.co/">https://nomadcoders.co/</a></li>
<li><a href="https://dev-dain.tistory.com/128">https://dev-dain.tistory.com/128</a></li>
<li><a href="https://hyejin-dev.tistory.com/12">https://hyejin-dev.tistory.com/12</a></li>
<li><a href="https://developer.mozilla">https://developer.mozilla</a></li>
</ul>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[JavaScript - Form / Input / preventDefault / localStorage]]></title>
            <link>https://velog.io/@eunhye_k/JavaScript-Form-Input-preventDefault</link>
            <guid>https://velog.io/@eunhye_k/JavaScript-Form-Input-preventDefault</guid>
            <pubDate>Tue, 22 Mar 2022 15:18:45 GMT</pubDate>
            <description><![CDATA[<h2 id="💡-form이란">💡 Form이란?</h2>
<p>정보를 제출하기 위한 대화형 컨트롤을 포함하는 문서 구획을 뜻한다.</p>
<pre><code class="language-html">&lt;form&gt;&lt;/form&gt;</code></pre>
<br>

<h2 id="💡-input이란">💡 Input이란?</h2>
<p>사용자로부터 입력을 받을 수 있는 입력 필드를 뜻한다.
<br></p>
<h3 id="1-type">1. Type</h3>
<p>!codepen[eun-hye-kim/embed/xxpEaNQ?default-tab=html%2Cresult]</p>
<ul>
<li>text: type속성의 기본값, 한 줄로 된 텍스트 필드</li>
<li>pssword: 비밀번호를 입력할 수 있는 입력 필드</li>
<li>file: 파일을 업로드 할 수 있는 입력 필드</li>
<li>radio: 라디오 버튼을 정의</li>
<li>checkbox: 체크 박스를 정의, 다중 선택시 사용</li>
<li>button: 클릭 가능한 버튼을 정의, value로 텍스트 입력 가능</li>
<li>submit: 제출 버튼을 정의, value로 텍스트 입력 가능</li>
<li>reset: 리셋 버튼을 정의, value로 텍스트 입력 가능</li>
</ul>
<blockquote>
<p>참고
<a href="http://www.tcpschool.com/html-tag-attrs/input-type">http://www.tcpschool.com/html-tag-attrs/input-type</a></p>
</blockquote>
<br>

<h3 id="2-속성">2. 속성</h3>
<p>!codepen[eun-hye-kim/embed/wvpzNed?default-tab=html%2Cresult]</p>
<ul>
<li>placeholder: 사용자가 적절한 값을 입력할 수 있도록 도와주는 짧은 도움말</li>
<li>required: 서버로 제출되기 전 반드시 채워져 있어야 하는 입력 필드를 검사, 블리언으로 구분</li>
<li>maxlength: 입력 가능한 최대 길이를 제한<br>

</li>
</ul>
<h2 id="💡-login-만들기">💡 login 만들기</h2>
<p>!codepen[eun-hye-kim/embed/dyJXjrj?default-tab=html%2Cresult]</p>
<br>

<h3 id="1-preventdefault">1. preventDefault</h3>
<pre><code class="language-javascript">function onLoginSubmit(event) {
  event.preventDefault();
}</code></pre>
<ul>
<li>addEventListener의 함수에서 첫 arument는 지금 막 벌어진 event들에 대한 정보를 받아 저장하고, object 형식으로 볼 수 있다.</li>
<li>form을 submit하면 브라우저는 기본적으로 페이지를 새로고침하게 되어 있는데 이때 preventDefault 함수를 사용하여 기본 동작을 실행하지 못하도록 막는다.</li>
<li>a태그 click시 페이지 이동을 막을때도 사용한다.</li>
</ul>
<br>

<h3 id="2-localstorage">2. localStorage</h3>
<ul>
<li>브라우저 상에 데이터를 저장할 수 있는 기술<pre><code class="language-javascript">localStorage.setItem(&quot;Key&quot;,&quot;Value&quot;); //저장
localStorage.getItem(&quot;Key&quot;); //불러오기
localStorage.removeItem(&quot;Key&quot;); //삭제</code></pre>
<br>

</li>
</ul>
<h2 id="👋-마치며">👋 마치며</h2>
<p>스터디 활동을 위해 기록하고 있습니다.
다르거나 추가해야할 내용이 있다면 언제든지 코멘트 남겨주세요 :)</p>
<p>✉ <a href="mailto:dmsp1234@gmail.com">dmsp1234@gmail.com</a>
<br></p>
<h2 id="📍-참고">📍 참고</h2>
<hr>
<ul>
<li><a href="https://nomadcoders.co/">https://nomadcoders.co/</a></li>
<li><a href="https://developer.mozilla.org/ko/docs/Web/HTML/Element/form">https://developer.mozilla.org/ko/docs/Web/HTML/Element/form</a></li>
<li><a href="http://www.tcpschool.com/">http://www.tcpschool.com/</a></li>
<li><a href="https://www.daleseo.com/js-web-storage/">https://www.daleseo.com/js-web-storage/</a></li>
</ul>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[JavaScript - Round / Ceil / Floor / Random / Length]]></title>
            <link>https://velog.io/@eunhye_k/JavaScript-round-ceil-floor-random-length</link>
            <guid>https://velog.io/@eunhye_k/JavaScript-round-ceil-floor-random-length</guid>
            <pubDate>Thu, 17 Mar 2022 16:01:29 GMT</pubDate>
            <description><![CDATA[<h2 id="💡-math란">💡 Math란?</h2>
<p>수학적인 상수와 함수를 위한 속성과 메서드를 가진 내장 객체
<br></p>
<h3 id="1-mathround">1. Math.round()</h3>
<ul>
<li>주어진 숫자를 반올림한 수와 가장 가까운 정수 값을 반환합니다. -&gt; 반올림<pre><code class="language-javascript">  console.log(Math.round(0.9)); //result: 1
  console.log(Math.round(0.95)); //result: 1
  console.log(Math.round(1.05)); //result: 1</code></pre>
<br>

</li>
</ul>
<h3 id="2-mathceil">2. Math.ceil()</h3>
<ul>
<li>주어진 숫자보다 크거나 같은 숫자 중 가장 적은 정수 값을 반환합니다. -&gt; 올림<pre><code class="language-javascript">  console.log(Math.ceil(1)); //result: 1
  console.log(Math.ceil(1.9)); //result: 2
  console.log(Math.ceil(1.95)); //result: 2
  console.log(Math.ceil(1.05)); //result: 2</code></pre>
<br>

</li>
</ul>
<h3 id="3-mathfloor">3. Math.floor()</h3>
<ul>
<li>주어진 숫자와 같거나 작은 숫자 중 가장 큰 정수를 반환합니다. -&gt; 내림<pre><code class="language-javascript">  console.log(Math.floor(4)); //result: 4
  console.log(Math.floor(4.9)); //result: 4
  console.log(Math.floor(4.95)); //result: 4
  console.log(Math.floor(4.05)); //result: 4</code></pre>
<br>

</li>
</ul>
<h3 id="4-mathrandom">4. Math.random()</h3>
<ul>
<li>0~1(1은 미포함) 구간에서 부동소수점의 난수를 생성합니다.</li>
</ul>
<p>!codepen[eun-hye-kim/embed/RwxrKMz?default-tab=html%2Cresult]
<br></p>
<h3 id="👉-arraylength">👉 Array.length</h3>
<ul>
<li>배열의 길이를 체크하여 정수로 반환합니다.</li>
</ul>
<p>!codepen[eun-hye-kim/embed/rNpxjgK?default-tab=html%2Cresult]
<br></p>
<h2 id="💡-랜덤으로-명언-호출하기">💡 랜덤으로 명언 호출하기</h2>
<p>!codepen[eun-hye-kim/embed/mdpVWXR?default-tab=html%2Cresult]
<br></p>
<h2 id="💡-랜덤으로-이미지-호출하기">💡 랜덤으로 이미지 호출하기</h2>
<pre><code class="language-javascript">//배열에 이미지 파일명 담기
const images = [&quot;bg1.jpg&quot;, &quot;bg2.jpg&quot;, &quot;bg3.jpg&quot;, &quot;bg4.jpg&quot;, &quot;bg5.jpg&quot;];

//랜덤 수 곱하기 배열의 수 = 0.XXXXX * 5
//0과 5사이의 숫자를 랜덤으로 추출하고 그 수를 내림하여 정수로 반환 (5 이상의 수는 나오지 않음)
//배열 [0 ,1, 2, 3, 4]중 랜덤으로 나온 수의 값 담기
const chosenImage = images[Math.floor(Math.random() * images.length)];

//img태그 생성
const bgImage = document.createElement(&quot;img&quot;);

//생성된 img태그 src속성에 img경로 담기
bgImage.src = `img/${chosenImage}`;

//body안에 img태그 추가하기
document.body.appendChild(bgImage);</code></pre>
<br>

<h2 id="👋-마치며">👋 마치며</h2>
<p>스터디 활동을 위해 기록하고 있습니다.
다르거나 추가해야할 내용이 있다면 언제든지 코멘트 남겨주세요 :)</p>
<p>✉ <a href="mailto:dmsp1234@gmail.com">dmsp1234@gmail.com</a>
<br></p>
<h2 id="📍-참고">📍 참고</h2>
<hr>
<ul>
<li><a href="https://nomadcoders.co/">https://nomadcoders.co/</a></li>
<li><a href="https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math">https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math</a></li>
</ul>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[JavaScript - Interval / Timeout / Date]]></title>
            <link>https://velog.io/@eunhye_k/JavaScript-Interval-Timeout-Date</link>
            <guid>https://velog.io/@eunhye_k/JavaScript-Interval-Timeout-Date</guid>
            <pubDate>Mon, 14 Mar 2022 16:47:08 GMT</pubDate>
            <description><![CDATA[<h2 id="💡-setinterval이란">💡 setInterval이란?</h2>
<p>특정 주기마다 반복하여 호출,
바로 실행되지 않고 n초 후 첫 시작이 되고 계속 n초마다 반복한다.
<br></p>
<h3 id="1-구문">1. 구문</h3>
<pre><code class="language-javascript">    setInterval(실행함수, 시간);</code></pre>
<br>

<h3 id="2-실행하기">2. 실행하기</h3>
<p>!codepen[eun-hye-kim/embed/qBpEPZo?default-tab=html%2Cresult]
<br></p>
<h2 id="💡-settimeout이란">💡 setTimeout이란?</h2>
<p>일정 시간 지연후 호출,
일정 시간 후에 특정 코드, 함수를 의도적으로 지연한 뒤 실행한다.
<br></p>
<h3 id="1-구문-1">1. 구문</h3>
<pre><code class="language-javascript">    setTimeout(실행함수, 시간);</code></pre>
<br>

<h3 id="2-실행하기-1">2. 실행하기</h3>
<p>!codepen[eun-hye-kim/embed/xxpbPYv?default-tab=html%2Cresult]
<br></p>
<h2 id="💡-date란">💡 Date란?</h2>
<p>Date 객체는 연월일, 시분초의 정보와 함께 밀리초(millisecond)의 정보도 함께 제공해준다.
<br></p>
<h3 id="1-연-월-일-요일-시-분-초-불러오기">1. 연, 월, 일, 요일, 시, 분, 초 불러오기</h3>
<p>!codepen[eun-hye-kim/embed/Exoaoxa?default-tab=html%2Cresult]</p>
<blockquote>
<p>월은 0부터 1월 / 1은 2월...
요일은 0부터 일요일 / 1은 월요일 / 2는 화요일...</p>
</blockquote>
<br>

<h3 id="2-시계만들기">2. 시계만들기</h3>
<p>!codepen[eun-hye-kim/embed/oNpgEZP?default-tab=html%2Cresult]</p>
<blockquote>
<p>String: 문자로 변환하기
padStart: 문자열이 n자 미만일 경우 원하는 문자로 채워서 해당 길이만큼 만들기
(``)백틱: ES6 문자열 사용</p>
</blockquote>
<br>

<h2 id="👋-마치며">👋 마치며</h2>
<p>스터디 활동을 위해 기록하고 있습니다.
다르거나 추가해야할 내용이 있다면 언제든지 코멘트 남겨주세요 :)</p>
<p>✉ <a href="mailto:dmsp1234@gmail.com">dmsp1234@gmail.com</a>
<br></p>
<h2 id="📍-참고">📍 참고</h2>
<hr>
<ul>
<li><a href="https://nomadcoders.co/">https://nomadcoders.co/</a></li>
<li><a href="https://developer.mozilla.org/ko/docs/Web/API/setTimeout">https://developer.mozilla.org/ko/docs/Web/API/setTimeout</a></li>
<li><a href="https://wonyoung2257.tistory.com/14">https://wonyoung2257.tistory.com/14</a></li>
</ul>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[예제풀이]]></title>
            <link>https://velog.io/@eunhye_k/%EC%98%88%EC%A0%9C%ED%92%80%EC%9D%B4</link>
            <guid>https://velog.io/@eunhye_k/%EC%98%88%EC%A0%9C%ED%92%80%EC%9D%B4</guid>
            <pubDate>Tue, 01 Mar 2022 23:26:22 GMT</pubDate>
            <description><![CDATA[<pre><code class="language-javascript">let a = 1; //증감하는 값 담기
let b = 0; //합한 값 담기

//1부터 999이하의 자연수까지 1씩 증감 하면서 반복문 수행
for (a; a &lt;= 999; a++) {

  //3의 배수이거나 5의 배수인 경우 b에 합산하고 다시 반복문 수행
  if (a % 3 == 0 || a % 5 == 0) {
    b += a;
  }
}

//result
console.log(b);</code></pre>
<ul>
<li><p>Loop의 인덱스는 특별한 상황이 아닐 시 0으로 시작하도록 습관을 들여주세요.
배열(Array)의 <code>인덱스는 항상 0부터</code> 시작하므로 0부터 시작하는 습관이 유리한 경우가 많습니다.</p>
</li>
<li><p><code>변수명</code>은 <code>직관적</code>으로 알아 볼 수 있게 작성하는 것이 소스의 유지보수 및 코드 가독성에 좋습니다. a, b 같은 의미없는 변수명 보다는 count(cnt), sum, total 등의 변수명으로 작성하는 습관을 들여주세요.</p>
</li>
<li><p><code>인덱스 변수</code> (작성하신 소스에서는 변수명 ‘a’)는 <code>for loop 안에서 생성</code>되도록 해주세요.
다른 로직에서 변수명의 충돌로 인해 <code>지역변수</code>가 <code>간섭</code>되는 케이스가 발생 될 수도 있습니다.</p>
</li>
</ul>
<pre><code class="language-javascript">let sum = 0; //합한 값 담기

//1부터 1000이하의 자연수까지 1씩 증감 하면서 반복문 수행
for (num = 0; num &lt;= 999; num++) {

  //3의 배수이거나 5의 배수인 경우 b에 합산하고 다시 반복문 수행
  if (num % 3 == 0 || num % 5 == 0) {
    sum += num;
  }
}

//result
console.log(sum);</code></pre>
<br>

<p>참고</p>
<ul>
<li>While Loop</li>
</ul>
<pre><code class="language-javascript">function whileSum() {
    let sum = 0;
    let num = 1;
    while( num &lt; 1000 ) {
     if( num % 3 == 0 || num % 5 == 0 ) sum += num;
     num++;
    }
    return sum;
}

console.log( &quot;sum&quot;, whileSum() );</code></pre>
<ul>
<li>For</li>
</ul>
<pre><code class="language-javascript">function forSum() {
    let sum = 0;
    for( let num = 0; num &lt; 1000; num ++ ) {
        if( num % 3 == 0 || num % 5 == 0 ) sum += num;
    }
    return sum;
}

console.log( &quot;sum&quot;, forSum() );</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[JavaScript - Event ]]></title>
            <link>https://velog.io/@eunhye_k/JavaScript-Event</link>
            <guid>https://velog.io/@eunhye_k/JavaScript-Event</guid>
            <pubDate>Sun, 27 Feb 2022 13:01:01 GMT</pubDate>
            <description><![CDATA[<h2 id="💡-event란">💡 Event란?</h2>
<p>어떤 <code>행위</code>를 <code>실행</code>하는 것으로 이를 통해 사용자와 웹페이지가 상호 작용할 수 있다.
이벤트 핸들러를 통하여 이벤트가 발생시 원하는 함수에 연결하여 실행 시킬 수 있다.
<br></p>
<h3 id="1-listen하고-싶은-event-찾기">1. Listen하고 싶은 Event 찾기</h3>
<blockquote>
<ul>
<li>google에 element html element mdn 검색, Web APIs라는 문장이 포함된글 찾기</li>
</ul>
</blockquote>
<ul>
<li>element를 console.dir로 출력해서 on 이라고 적혀있는걸 사용하기</li>
</ul>
<br>

<h3 id="2-click">2. Click</h3>
<p>!codepen[eun-hye-kim/embed/LYOgYxR?default-tab=html%2Cresult]</p>
<p>🚨 !참고</p>
<ul>
<li>특정 이벤트 발생시 함수 실행하기<pre><code class="language-javascript">  title.addEventListener(&quot;click&quot;,handleTitleClick);</code></pre>
</li>
<li>함수 실행하기<pre><code class="language-javascript">  handleTitleClick();</code></pre>
<br>

</li>
</ul>
<h3 id="3-mouseenter--mouseleave">3. Mouseenter &amp; Mouseleave</h3>
<p>!codepen[eun-hye-kim/embed/mdqzdRB?default-tab=html%2Cresult]
<br></p>
<h3 id="4-resize--copy">4. resize &amp; copy</h3>
<p>!codepen[eun-hye-kim/embed/QWOZbwp?default-tab=html%2Cresult]</p>
<p>🚨 !참고
document에서 body,head,title은 언제든 document.body로 호출 가능하지만 div나 h1 등 은 querySelector나 getElementById를 사용해야 한다.
<br></p>
<h3 id="4-if-else-사용하기">4. if else 사용하기</h3>
<p>!codepen[eun-hye-kim/embed/NWwOqyv?default-tab=html%2Cresult]
<br></p>
<h3 id="5-classname-사용하기">5. className 사용하기</h3>
<p>!codepen[eun-hye-kim/embed/oNoaXjO?default-tab=html%2Cresult]</p>
<p>🚨 ! 참고
string이 반복되면 상수로 만들어 주는게 좋다.
console에서 오탈자에 대해 친절하게 설명해주기 때문이다.
<br></p>
<h3 id="5-classlist-사용하기">5. classList 사용하기</h3>
<p>!codepen[eun-hye-kim/embed/dyZgoLG?default-tab=html%2Cresult]
<br></p>
<h3 id="6-toggle-사용하기">6. toggle 사용하기</h3>
<p>!codepen[eun-hye-kim/embed/RwjeWbK?default-tab=html%2Cresult]
🚨 ! 참고
5번과 6번은 같은 기능을 수행하고 있는데, toggle을 사용하여 좀 더 스마트한 코드를 만들 수 있다.
<br></p>
<h2 id="👋-마치며">👋 마치며</h2>
<p>스터디 활동을 위해 기록하고 있습니다.
다르거나 추가해야할 내용이 있다면 언제든지 코멘트 남겨주세요 :)</p>
<p>✉ <a href="mailto:dmsp1234@gmail.com">dmsp1234@gmail.com</a>
<br></p>
<h2 id="📍-참고">📍 참고</h2>
<hr>
<ul>
<li><a href="https://nomadcoders.co/">https://nomadcoders.co/</a></li>
<li><a href="https://developer.mozilla.org/ko/docs/Web/Events">https://developer.mozilla.org/ko/docs/Web/Events</a></li>
</ul>
<hr>
]]></description>
        </item>
        <item>
            <title><![CDATA[JavaScript - Document]]></title>
            <link>https://velog.io/@eunhye_k/JavaScript-document</link>
            <guid>https://velog.io/@eunhye_k/JavaScript-document</guid>
            <pubDate>Thu, 24 Feb 2022 14:55:28 GMT</pubDate>
            <description><![CDATA[<h2 id="💡-document란">💡 document란?</h2>
<p><code>웹 페이지</code> 그 자체를 의미하며, <code>document</code>를 통해 웹 페이지에 존재하는 다양한 HTML 요소에 접근할 수 있다.
<br></p>
<h3 id="1-consoledirdocument">1. console.dir(document);</h3>
<ul>
<li>매개변수로 전달된 객체의 속성을 출력</li>
<li>요소를 <code>JSON</code>과 같은 트리 구조로 출력<br>

</li>
</ul>
<h3 id="2-documentgetelementbyid">2. document.getElementById();</h3>
<ul>
<li>특정 <code>id</code>를 가진 <code>하나</code>의 element를 <code>반환</code>
<img src="https://images.velog.io/images/eunhye_k/post/787451ef-beb2-40a8-9501-a69a0f7452ba/image.png" alt=""></li>
<li>id에 접근해서 값 바꾸기
<img src="https://images.velog.io/images/eunhye_k/post/ed345e37-b087-4a2a-ae97-c83045819113/image.png" alt=""><br></li>
</ul>
<h3 id="3-documentgetelementsbyclassname">3. document.getElementsByClassName();</h3>
<ul>
<li><p>특정 <code>class</code>를 가진 element를 <code>배열</code>로 <code>반환</code></p>
<pre><code class="language-html">  &lt;h1 class=&quot;title&quot;&gt;hello&lt;/h1&gt;
  &lt;h1 class=&quot;title&quot;&gt;hello&lt;/h1&gt;
  &lt;h1 class=&quot;title&quot;&gt;hello&lt;/h1&gt;
  &lt;h1 class=&quot;title&quot;&gt;hello&lt;/h1&gt;</code></pre>
<pre><code class="language-javascript">  //변수명 title에 title class를 가진 요소의 값 담기
  const title = document.getElementsByClassName(&quot;title&quot;);
  console.log(title);

  //console 결과
  HTMLCollection(4) [h1.hello, h1.hello, h1.hello, h1.hello]
  0: h1.hello
  1: h1.hello
  2: h1.hello
  3: h1.hello</code></pre>
<br>

</li>
</ul>
<h3 id="4-documentgetelementsbytagname">4. document.getElementsByTagName();</h3>
<ul>
<li>특정 <code>Tag</code>를 가진 element를 <code>배열</code>로 <code>반환</code><br>

</li>
</ul>
<h3 id="5-documentqueryselector✨👍">5. document.querySelector();✨👍</h3>
<ul>
<li><code>첫번째</code> element 하나만 <code>반환</code></li>
<li><code>.</code> <code>#</code> <code>:first-child</code> <code>CSS선택자</code>와 동일한 방식으로 사용<br>

</li>
</ul>
<h3 id="6-documentqueryselectorall">6. document.querySelectorAll();</h3>
<ul>
<li>element를 <code>배열</code>로 <code>반환</code></li>
<li><code>.</code> <code>#</code> <code>:first-child</code> <code>CSS선택자</code>와 동일한 방식으로 사용<br>

</li>
</ul>
<h2 id="👋-마치며">👋 마치며</h2>
<p>스터디 활동을 위해 기록하고 있습니다.
다르거나 추가해야할 내용이 있다면 언제든지 코멘트 남겨주세요 :)</p>
<p>✉ <a href="mailto:dmsp1234@gmail.com">dmsp1234@gmail.com</a>
<br></p>
<h2 id="📍-참고">📍 참고</h2>
<hr>
<ul>
<li><a href="https://nomadcoders.co/">https://nomadcoders.co/</a></li>
<li><a href="https://velog.io/@mook9288/javascript-console-%EA%B0%9D%EC%B2%B4">https://velog.io/@mook9288/javascript-console-%EA%B0%9D%EC%B2%B4</a></li>
</ul>
<hr>
]]></description>
        </item>
    </channel>
</rss>