{"componentChunkName":"component---src-templates-index-js","path":"/2/","result":{"data":{"allContentfulPost":{"edges":[{"node":{"title":"인사이드 자바스크립트 책 읽으며","id":"89e6cf85-7fac-5234-91c3-2b6e4269547d","slug":"inside-javascript","publishDate":"March 13, 2019","heroImage":{"title":"Inside JavaScript","fluid":{"aspectRatio":1.5059171597633136,"src":"//images.ctfassets.net/e1rkozd9gki4/2mtaZ1t56mLxR6UjGZZsea/4392de668e4f07b576e13317718197ef/Screen_Shot_2019-03-15_at_12.22.37_AM.png?w=1800&q=50","srcSet":"//images.ctfassets.net/e1rkozd9gki4/2mtaZ1t56mLxR6UjGZZsea/4392de668e4f07b576e13317718197ef/Screen_Shot_2019-03-15_at_12.22.37_AM.png?w=450&h=299&q=50 450w,\n//images.ctfassets.net/e1rkozd9gki4/2mtaZ1t56mLxR6UjGZZsea/4392de668e4f07b576e13317718197ef/Screen_Shot_2019-03-15_at_12.22.37_AM.png?w=900&h=598&q=50 900w,\n//images.ctfassets.net/e1rkozd9gki4/2mtaZ1t56mLxR6UjGZZsea/4392de668e4f07b576e13317718197ef/Screen_Shot_2019-03-15_at_12.22.37_AM.png?w=1018&h=676&q=50 1018w","srcWebp":"//images.ctfassets.net/e1rkozd9gki4/2mtaZ1t56mLxR6UjGZZsea/4392de668e4f07b576e13317718197ef/Screen_Shot_2019-03-15_at_12.22.37_AM.png?w=1800&q=50&fm=webp","srcSetWebp":"//images.ctfassets.net/e1rkozd9gki4/2mtaZ1t56mLxR6UjGZZsea/4392de668e4f07b576e13317718197ef/Screen_Shot_2019-03-15_at_12.22.37_AM.png?w=450&h=299&q=50&fm=webp 450w,\n//images.ctfassets.net/e1rkozd9gki4/2mtaZ1t56mLxR6UjGZZsea/4392de668e4f07b576e13317718197ef/Screen_Shot_2019-03-15_at_12.22.37_AM.png?w=900&h=598&q=50&fm=webp 900w,\n//images.ctfassets.net/e1rkozd9gki4/2mtaZ1t56mLxR6UjGZZsea/4392de668e4f07b576e13317718197ef/Screen_Shot_2019-03-15_at_12.22.37_AM.png?w=1018&h=676&q=50&fm=webp 1018w","sizes":"(max-width: 1800px) 100vw, 1800px"}},"body":{"childMarkdownRemark":{"timeToRead":2,"html":"<h1 id=\"자바스크립의-핵심-개념\" style=\"position:relative;\"><a href=\"#%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%EC%9D%98-%ED%95%B5%EC%8B%AC-%EA%B0%9C%EB%85%90\" aria-label=\"자바스크립의 핵심 개념 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>자바스크립의 핵심 개념</h1>\n<h2 id=\"1-객체\" style=\"position:relative;\"><a href=\"#1-%EA%B0%9D%EC%B2%B4\" aria-label=\"1 객체 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1. 객체</h2>\n<ul>\n<li>자바스크립의 기본 데이터 타입\" boolean, number, string.</li>\n<li>특별한 값: null, undefinded</li>\n<li>위 데이터 타입, 값을 제외한 나머지는 모두 객체이며, 자바스크립트는 null, undefined을 제외한 모든 것을 객체로 다를 수 있다.</li>\n</ul>\n<h3 id=\"1-1-숫자\" style=\"position:relative;\"><a href=\"#1-1-%EC%88%AB%EC%9E%90\" aria-label=\"1 1 숫자 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1-1) 숫자</h3>\n<ul>\n<li>자바스크립트는 하나의 숫자형만 존재한다.자바스크립트에서는 모든 숫자를 64비트 부동 소수점 형태로 저장하기 때문이다.</li>\n<li>자바스크립트에서는 정수형이 따로 없고, 모든 숫자를 실수로 처리하므로 나눗셈 연산을 할 때는 주의해야 한다.</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">var</span> num <span class=\"token operator\">=</span> <span class=\"token number\">5</span> <span class=\"token operator\">/</span><span class=\"token number\">2</span><span class=\"token punctuation\">;</span>\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>num<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// (출력값) 2.5</span>\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>Math<span class=\"token punctuation\">.</span><span class=\"token function\">floor</span><span class=\"token punctuation\">(</span>num<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// (출력값) 2</span></code></pre></div>\n<h3 id=\"1-2-문자열\" style=\"position:relative;\"><a href=\"#1-2-%EB%AC%B8%EC%9E%90%EC%97%B4\" aria-label=\"1 2 문자열 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1-2) 문자열</h3>\n<ul>\n<li>문자열은 작은 따옴표(')나 큰 따옴표(\")로 생성한다.</li>\n<li>자바스크립트에서는 한 번 생성된 문자열은 읽기만 가능하지 수정은 불가능하다.</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token comment\">// str 문자열 생성</span>\n<span class=\"token keyword\">var</span> str <span class=\"token operator\">=</span> <span class=\"token string\">'test'</span><span class=\"token punctuation\">;</span>\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>str<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> str<span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> str<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> str<span class=\"token punctuation\">[</span><span class=\"token number\">3</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// (출력값) test</span>\nstr<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token string\">'T'</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// 문자열의 첫 글자를 대문자로 변경?</span>\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>str<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// (출력값) test</span></code></pre></div>\n<h3 id=\"1-3-불린값\" style=\"position:relative;\"><a href=\"#1-3-%EB%B6%88%EB%A6%B0%EA%B0%92\" aria-label=\"1 3 불린값 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1-3) 불린값</h3>\n<ul>\n<li>자바스크립트는 true와 false 값을 나타내는 불린 타입을 가진다.</li>\n</ul>\n<h3 id=\"1-4-null과-undefined\" style=\"position:relative;\"><a href=\"#1-4-null%EA%B3%BC-undefined\" aria-label=\"1 4 null과 undefined permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1-4) null과 undefined</h3>\n<ul>\n<li>이 두 타입은 모두 자바스크립트에서 '값이 비어있음'을 나타낸다.</li>\n<li>자바스크립트 환경 내에서 기본적으로 값이 할당되지 않은 변수는 undefined 타입이며, undefined 타입의 변수는 변수 자체의 값 또한 undefined이다.</li>\n<li>null 타입의 경우는 개발자가 명시적으로 값이 비어있음을 나타내는 데 사용한다.</li>\n<li>null 타입 변수의 typeof 결과가 null이 아니라 object이다.</li>\n</ul>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token comment\">// null 타입 변수 생성</span>\n<span class=\"token keyword\">var</span> nullVar <span class=\"token operator\">=</span> <span class=\"token keyword\">null</span><span class=\"token punctuation\">;</span>\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">typeof</span> nullVar <span class=\"token operator\">===</span> <span class=\"token keyword\">null</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// (출력값) false</span>\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>nullVar <span class=\"token operator\">===</span> <span class=\"token keyword\">null</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// (출력값) true</span></code></pre></div>\n<h2 id=\"2-함수\" style=\"position:relative;\"><a href=\"#2-%ED%95%A8%EC%88%98\" aria-label=\"2 함수 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2. 함수</h2>\n<ul>\n<li>자바스크립트에서는 함수도 객체로 취급한다.</li>\n</ul>\n<h2 id=\"3-프로토타입\" style=\"position:relative;\"><a href=\"#3-%ED%94%84%EB%A1%9C%ED%86%A0%ED%83%80%EC%9E%85\" aria-label=\"3 프로토타입 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3. 프로토타입</h2>\n<ul>\n<li>모든 객체는 숨겨진 링크(Link)인 프로토타입(Prototype)을 가진다. 이 링크는 해당 객체를 생성한 생성자의 프로토타입 객체를 가리킨다.</li>\n</ul>\n<h2 id=\"4-실행-컨텍스트와-클로저\" style=\"position:relative;\"><a href=\"#4-%EC%8B%A4%ED%96%89-%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8%EC%99%80-%ED%81%B4%EB%A1%9C%EC%A0%80\" aria-label=\"4 실행 컨텍스트와 클로저 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4. 실행 컨텍스트와 클로저</h2>\n<ul>\n<li>자바스크립트는 자신만의 독특한 과정으로 실행 컨텍스트를 만들고 그 안에서 실행이 이루어진다. 이 실행 컨텍스트는 자신만의 유효 범위(Scope)을 갖는데, 이 과정에서 클로저를 구현할 수 있다.</li>\n</ul>","excerpt":"자바스크립의 핵심 개념 1. 객체 자바스크립의 기본 데이터 타입\" boolean, number, string. 특별한 값: null…"}}}},{"node":{"title":"의사 양반. 내가 팀장이라니!","id":"77a568d8-e4e2-5569-a973-85222ad55a5f","slug":"teamleader","publishDate":"January 29, 2019","heroImage":{"title":"Songdo","fluid":{"aspectRatio":1.3330781010719754,"src":"//images.ctfassets.net/e1rkozd9gki4/1kBwxMvS7iWgW3Ayayd8TT/f4915f5dfeda46f947a964c6a66b0037/IMG_20190122_182228-EFFECTS.jpg?w=1800&q=50","srcSet":"//images.ctfassets.net/e1rkozd9gki4/1kBwxMvS7iWgW3Ayayd8TT/f4915f5dfeda46f947a964c6a66b0037/IMG_20190122_182228-EFFECTS.jpg?w=450&h=338&q=50 450w,\n//images.ctfassets.net/e1rkozd9gki4/1kBwxMvS7iWgW3Ayayd8TT/f4915f5dfeda46f947a964c6a66b0037/IMG_20190122_182228-EFFECTS.jpg?w=900&h=675&q=50 900w,\n//images.ctfassets.net/e1rkozd9gki4/1kBwxMvS7iWgW3Ayayd8TT/f4915f5dfeda46f947a964c6a66b0037/IMG_20190122_182228-EFFECTS.jpg?w=1741&h=1306&q=50 1741w","srcWebp":"//images.ctfassets.net/e1rkozd9gki4/1kBwxMvS7iWgW3Ayayd8TT/f4915f5dfeda46f947a964c6a66b0037/IMG_20190122_182228-EFFECTS.jpg?w=1800&q=50&fm=webp","srcSetWebp":"//images.ctfassets.net/e1rkozd9gki4/1kBwxMvS7iWgW3Ayayd8TT/f4915f5dfeda46f947a964c6a66b0037/IMG_20190122_182228-EFFECTS.jpg?w=450&h=338&q=50&fm=webp 450w,\n//images.ctfassets.net/e1rkozd9gki4/1kBwxMvS7iWgW3Ayayd8TT/f4915f5dfeda46f947a964c6a66b0037/IMG_20190122_182228-EFFECTS.jpg?w=900&h=675&q=50&fm=webp 900w,\n//images.ctfassets.net/e1rkozd9gki4/1kBwxMvS7iWgW3Ayayd8TT/f4915f5dfeda46f947a964c6a66b0037/IMG_20190122_182228-EFFECTS.jpg?w=1741&h=1306&q=50&fm=webp 1741w","sizes":"(max-width: 1800px) 100vw, 1800px"}},"body":{"childMarkdownRemark":{"timeToRead":2,"html":"<h1 id=\"팀장\" style=\"position:relative;\"><a href=\"#%ED%8C%80%EC%9E%A5\" aria-label=\"팀장 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>팀장</h1>\n<p>team長: 같은 일에 종사하는 한 팀의 책임자.\nTeam Leader</p>\n<hr>\n<h2 id=\"의사-양반-내가-팀장이라니\" style=\"position:relative;\"><a href=\"#%EC%9D%98%EC%82%AC-%EC%96%91%EB%B0%98-%EB%82%B4%EA%B0%80-%ED%8C%80%EC%9E%A5%EC%9D%B4%EB%9D%BC%EB%8B%88\" aria-label=\"의사 양반 내가 팀장이라니 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>의사 양반. 내가 팀장이라니!</h2>\n<blockquote>\n<p>팀장으로 태어나는 사람은 없다.</p>\n</blockquote>\n<ul>\n<li>나는 그만한 자격이 있는가?</li>\n<li>팀과 프로젝트를 관리하기 위해서는 어떻게 해야 할까?</li>\n<li>우리 팀에 유명한 프로젝트 관리 방법과 툴을 적용해볼까?</li>\n<li>...</li>\n</ul>\n<p>어떻게 하면 우리 팀원들과 프로젝트를 잘 이끌 수 있을까 고민하며 매일 일을 한다.</p>\n<hr>\n<h2 id=\"눈에-보이지-않는-마음의-중요성\" style=\"position:relative;\"><a href=\"#%EB%88%88%EC%97%90-%EB%B3%B4%EC%9D%B4%EC%A7%80-%EC%95%8A%EB%8A%94-%EB%A7%88%EC%9D%8C%EC%9D%98-%EC%A4%91%EC%9A%94%EC%84%B1\" aria-label=\"눈에 보이지 않는 마음의 중요성 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>눈에 보이지 않는 마음의 중요성</h2>\n<blockquote>\n<p>회사 미팅 후 대표와의 대화. 팀장인 나의 고민을 털어 놓다.</p>\n</blockquote>\n<p>회사 대표님이 'The Art of Project Management : 마음을 움직이는 프로젝트 관리' 라는 책을 추천해주시면서, 좋은 팀을 만들기 위해 가장 필요한 것은 마음이라고 말해주셨다.</p>\n<p>이 책을 읽어보지는 못했지만, 프로젝트에서 제일 중요한 건 사람이고 사람의 마음을 움직이는 것이 프로젝트와 팀 관리의 성공 요소이다. 나는 때론 사람을 제일 우선으로 생각하기보다 프로젝트의 결과만을 더 바라보고 있지 않았나 반성을 해본다. 팀원들이 어떠한 마음으로 프로젝트를 임하고 있는지 주의 깊게 관찰하고, 소통과 협력을 강화하는 것이 팀장의 역할이다.</p>\n<blockquote>\n<p>성공하는 데 가장 중요한 것은 다른 사람들과 조화롭게 지내는 것이다. 성공과 협력은 하나로 연결되어 있다. \n윌리엄 페더</p>\n</blockquote>\n<p>나는 팀원들이 스스로 계획하고 수행할 수 있도록 팀원들에게 자율성과 책임을 줄 뿐 아니라, 사람과 사람으로 마음을 나누는 팀장이 되고 싶다. 함께 재미있고 더불어 성장하는 개발팀이 되도록 내가 더욱 마음을 열고 다가가야겠다.\n우리 회사에는 대학생 인턴이 있다. 그 인턴과 함께 매주 금요일마다 진행되고 있는 프로젝트에 대해 회고(Retrospective)를 진행하고 있다. 회고 시간에는 아래와 같은 주제로 대화를 나눈다.</p>\n<ul>\n<li>사건 (의미 있던 일들, 개발 등)</li>\n<li>만족도 (학습, 감정 등)</li>\n<li>측정(작업 속도, 리팩토링 등)</li>\n<li>협업</li>\n<li>의견</li>\n<li>시도해볼 작업과 개선 사항의 목록</li>\n</ul>\n<p>회고를 통해 우리는 계속 이어나갈 것과 고쳐야 할 것들을 정하고, 해당 사항들을 다음 주에 바로 적용해보았다. 회고를 통해 우리는 프로젝트의 개발과 관리에 큰 개선이 있었고, 개개인의 만족도도 많이 올라갔다.</p>\n<hr>\n<h2 id=\"성장과-소통\" style=\"position:relative;\"><a href=\"#%EC%84%B1%EC%9E%A5%EA%B3%BC-%EC%86%8C%ED%86%B5\" aria-label=\"성장과 소통 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>성장과 소통</h2>\n<blockquote>\n<p>마음을 움직이는 프로젝트 관리.</p>\n</blockquote>\n<p>팀장은 팀의 성장과 소통을 위해 존재하고, 그것을 위해 제일 헌신해야 한다. 팀을 수평적으로 운영하고, 팀원들이 자신의 업무에 집중할 수 있도록 자율성과 개개인을 향한 믿음을 줘야 한다. </p>\n<p>무슨 일이든 말은 쉽고 행동은 어려운 법이다.\n이제 더 나은 팀장이 되기 위해 노력하고, 그 과정을 글로 자주 남겨야겠다.</p>","excerpt":"팀장 team長: 같은 일에 종사하는 한 팀의 책임자.\nTeam Leader…"}}}},{"node":{"title":"TEST","id":"1c07dc48-4511-53aa-bc17-87c763771615","slug":"plenty-of-dogs","publishDate":"September 14, 2018","heroImage":{"title":"plenty-of-dogs","fluid":{"aspectRatio":1.6201620162016201,"src":"//images.ctfassets.net/e1rkozd9gki4/6IEbHAasCWKs8GMGuSQAcC/367e2a009d8d71b375cd6e9b05287aaf/plenty-of-dogs.jpg?w=1800&q=50","srcSet":"//images.ctfassets.net/e1rkozd9gki4/6IEbHAasCWKs8GMGuSQAcC/367e2a009d8d71b375cd6e9b05287aaf/plenty-of-dogs.jpg?w=450&h=278&q=50 450w,\n//images.ctfassets.net/e1rkozd9gki4/6IEbHAasCWKs8GMGuSQAcC/367e2a009d8d71b375cd6e9b05287aaf/plenty-of-dogs.jpg?w=900&h=556&q=50 900w,\n//images.ctfassets.net/e1rkozd9gki4/6IEbHAasCWKs8GMGuSQAcC/367e2a009d8d71b375cd6e9b05287aaf/plenty-of-dogs.jpg?w=1800&h=1111&q=50 1800w","srcWebp":"//images.ctfassets.net/e1rkozd9gki4/6IEbHAasCWKs8GMGuSQAcC/367e2a009d8d71b375cd6e9b05287aaf/plenty-of-dogs.jpg?w=1800&q=50&fm=webp","srcSetWebp":"//images.ctfassets.net/e1rkozd9gki4/6IEbHAasCWKs8GMGuSQAcC/367e2a009d8d71b375cd6e9b05287aaf/plenty-of-dogs.jpg?w=450&h=278&q=50&fm=webp 450w,\n//images.ctfassets.net/e1rkozd9gki4/6IEbHAasCWKs8GMGuSQAcC/367e2a009d8d71b375cd6e9b05287aaf/plenty-of-dogs.jpg?w=900&h=556&q=50&fm=webp 900w,\n//images.ctfassets.net/e1rkozd9gki4/6IEbHAasCWKs8GMGuSQAcC/367e2a009d8d71b375cd6e9b05287aaf/plenty-of-dogs.jpg?w=1800&h=1111&q=50&fm=webp 1800w","sizes":"(max-width: 1800px) 100vw, 1800px"}},"body":{"childMarkdownRemark":{"timeToRead":9,"html":"<p><a href=\"https://www.udemy.com/the-web-developer-bootcamp/\">The Web Developer Bootcamp - Udemy</a></p>\n<hr>\n<h2 id=\"116-introduction-to-functions\" style=\"position:relative;\"><a href=\"#116-introduction-to-functions\" aria-label=\"116 introduction to functions permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>116. Introduction to Functions</h2>\n<p><a href=\"http://webdev.slides.com/coltsteele/javascript-basics-20-21-22-23-64#/\">Intro to Functions by Colt Steele</a></p>\n<h4 id=\"function\" style=\"position:relative;\"><a href=\"#function\" aria-label=\"function permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Function</h4>\n<p>Functions let us wrap bits of code up into REUSABLE packages.  They are one of the building blocks of JS.</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">function</span> <span class=\"token function\">doSomething</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"HELLO WORLD\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>• Declare a function first.\n• Then call it.</p>\n<h4 id=\"arguments\" style=\"position:relative;\"><a href=\"#arguments\" aria-label=\"arguments permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Arguments</h4>\n<p>Often we want to write functions that take inputs.</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">function</span> <span class=\"token function\">square</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">num</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>num <span class=\"token operator\">*</span> num<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h4 id=\"return\" style=\"position:relative;\"><a href=\"#return\" aria-label=\"return permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Return</h4>\n<p>모든 함수는 반환을 한다.</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token comment\">//this function capitalizes the first char in a string:</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">capitalize</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">str</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">return</span> str<span class=\"token punctuation\">.</span><span class=\"token function\">charAt</span><span class=\"token punctuation\">(</span><span class=\"token number\">0</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">.</span><span class=\"token function\">toUpperCase</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> str<span class=\"token punctuation\">.</span><span class=\"token function\">slice</span><span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">var</span> city <span class=\"token operator\">=</span> <span class=\"token string\">\"paris\"</span><span class=\"token punctuation\">;</span>              <span class=\"token comment\">//\"paris\"</span>\n<span class=\"token keyword\">var</span> capital <span class=\"token operator\">=</span> <span class=\"token function\">capitalize</span><span class=\"token punctuation\">(</span>city<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>  <span class=\"token comment\">//\"Paris\"</span>\n\n<span class=\"token comment\">//we can capture the returned value in a variable</span></code></pre></div>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">function</span> <span class=\"token function\">isEven</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">num</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">return</span> num <span class=\"token operator\">%</span> <span class=\"token number\">2</span> <span class=\"token operator\">===</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">factorial</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">num</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n  <span class=\"token comment\">//define a result variable</span>\n  <span class=\"token keyword\">var</span> result <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span>\n  <span class=\"token comment\">//calculate factorial and store value in result</span>\n  <span class=\"token keyword\">for</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">var</span> i <span class=\"token operator\">=</span> <span class=\"token number\">2</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;=</span> num<span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n  \tresult <span class=\"token operator\">*=</span> i<span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token comment\">//return the result variable</span>\n  <span class=\"token keyword\">return</span> result<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">kebabToSnake</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">str</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t<span class=\"token comment\">//replace all '-' with \"_\"'s</span>\n\t<span class=\"token keyword\">var</span> newStr <span class=\"token operator\">=</span> str<span class=\"token punctuation\">.</span><span class=\"token function\">replace</span><span class=\"token punctuation\">(</span><span class=\"token regex\">/-/g</span> <span class=\"token punctuation\">,</span> <span class=\"token string\">\"_\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token comment\">//return str</span>\n\t<span class=\"token keyword\">return</span> newStr<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h2 id=\"122-scope-code-along\" style=\"position:relative;\"><a href=\"#122-scope-code-along\" aria-label=\"122 scope code along permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>122. Scope Code Along</h2>\n<p><a href=\"https://www.w3schools.com/js/js_scope.asp\">JavaScript Scope</a></p>\n<hr>\n<h2 id=\"124-higher-order-functions-code-along\" style=\"position:relative;\"><a href=\"#124-higher-order-functions-code-along\" aria-label=\"124 higher order functions code along permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>124. Higher Order Functions Code Along</h2>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">function</span> <span class=\"token function\">sing</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\tconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"twinkle twinkle...\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\tconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"how i wonder...\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token function\">setInterval</span><span class=\"token punctuation\">(</span>sing<span class=\"token punctuation\">,</span> <span class=\"token number\">1000</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token function\">clearInterval</span><span class=\"token punctuation\">(</span><span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token function\">setInterval</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\tconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"I am an anonymous function!\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\tconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"THIS IS AWESONE!\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2000</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<hr>\n<h2 id=\"126-introduction-to-arrays\" style=\"position:relative;\"><a href=\"#126-introduction-to-arrays\" aria-label=\"126 introduction to arrays permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>126. Introduction to Arrays</h2>\n<ul>\n<li><a href=\"http://webdev.slides.com/coltsteele/javascript-basics-20-61\">JS Arrays by Colt Steele</a></li>\n<li><a href=\"https://www.w3schools.com/js/js_arrays.asp\">JavaScript Arrays - w3schools</a></li>\n<li><a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array\">Array - JavaScript, MDN</a>{:target=\"_blank\"}</li>\n</ul>\n<p><strong>Push</strong>\nUse push to add to the end of an array:</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">var</span> colors <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"red\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"orange\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"yellow\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\ncolors<span class=\"token punctuation\">.</span><span class=\"token function\">push</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"green\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">//[\"red\", \"orange\", \"yellow\", \"green\"]</span></code></pre></div>\n<p><strong>Pop</strong>\nUse pop to remove the last item in an array</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">var</span> colors <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"red\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"orange\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"yellow\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\ncolors<span class=\"token punctuation\">.</span><span class=\"token function\">pop</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">//[\"red\", \"orange\"]</span>\n\n<span class=\"token comment\">//pop() returns the removed element</span>\n<span class=\"token keyword\">var</span> col <span class=\"token operator\">=</span> colors<span class=\"token punctuation\">.</span><span class=\"token function\">pop</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>  <span class=\"token comment\">//orange</span></code></pre></div>\n<p><strong>Unshift</strong>\nUse unshift to add to the front of an array</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">var</span> colors <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"red\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"orange\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"yellow\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\ncolors<span class=\"token punctuation\">.</span><span class=\"token function\">unshift</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"infrared\"</span><span class=\"token punctuation\">)</span>\n<span class=\"token comment\">//[\"infrared\", \"red\", \"orange\", \"yellow\"]</span></code></pre></div>\n<p><strong>Shift</strong>\nUse shift to remove the first item in an array</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">var</span> colors <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"red\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"orange\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"yellow\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\ncolors<span class=\"token punctuation\">.</span><span class=\"token function\">shift</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">//[\"orange\", \"yellow\"]</span>\n\n<span class=\"token comment\">//shift() also returns the removed element</span>\n<span class=\"token keyword\">var</span> col <span class=\"token operator\">=</span> colors<span class=\"token punctuation\">.</span><span class=\"token function\">shift</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>  <span class=\"token comment\">//orange</span></code></pre></div>\n<p><strong>IndexOf</strong>\nUse indexOf() to find the index of an item in an array</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">var</span> friends <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"Charlie\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Liz\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"David\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Mattias\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Liz\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">//returns the first index at which a given element can be found</span>\nfriends<span class=\"token punctuation\">.</span><span class=\"token function\">indexOf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"David\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//2</span>\nfriends<span class=\"token punctuation\">.</span><span class=\"token function\">indexOf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Liz\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//1, not 4</span>\n\n<span class=\"token comment\">//returns -1 if the element is not present.</span>\nfriends<span class=\"token punctuation\">.</span><span class=\"token function\">indexOf</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Hagrid\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//-1</span></code></pre></div>\n<p><strong>Slice</strong>\nUse slice() to copy parts of an array</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">var</span> fruits <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token string\">'Banana'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'Orange'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'Lemon'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'Apple'</span><span class=\"token punctuation\">,</span> <span class=\"token string\">'Mango'</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">//use slice to copy the 2nd and 3d fruits</span>\n<span class=\"token comment\">//specify index where the new array starts(1) and ends(3)</span>\n<span class=\"token keyword\">var</span> citrus <span class=\"token operator\">=</span> fruits<span class=\"token punctuation\">.</span><span class=\"token function\">slice</span><span class=\"token punctuation\">(</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">3</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">//this does not alter the original fruits array</span>\n<span class=\"token comment\">//citrus contains ['Orange','Lemon']</span>\n<span class=\"token comment\">//fruits contains ['Banana', 'Orange', 'Lemon', 'Apple', 'Mango'];</span>\n\n<span class=\"token comment\">//you can also use slice() to copy an entire array</span>\n<span class=\"token keyword\">var</span> nums <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span><span class=\"token number\">3</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">var</span> otherNums <span class=\"token operator\">=</span> nums<span class=\"token punctuation\">.</span><span class=\"token function\">slice</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">//both arrays are [1,2,3]</span></code></pre></div>\n<p><strong>2 Dimensional Array</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">var</span> friendGroups <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span>\n  <span class=\"token punctuation\">[</span><span class=\"token string\">\"Harry\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Ron\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Hermione\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  <span class=\"token punctuation\">[</span><span class=\"token string\">\"Malfoy\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Crabbe\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Goyle\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span>\n  <span class=\"token punctuation\">[</span><span class=\"token string\">\"Mooney\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Wormtail\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"Prongs\"</span><span class=\"token punctuation\">]</span>\n<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">//What is the result of this line:</span>\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>friendGroups<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// Mooney</span>\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>friendGroups<span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// [\"Mooney\", \"Wormtail\", \"Prongs\"]</span></code></pre></div>\n<p><strong>Simple todo list app</strong>\nlist.html</p>\n<div class=\"gatsby-highlight\" data-language=\"html\"><pre class=\"language-html\"><code class=\"language-html\"><span class=\"token doctype\">&lt;!DOCTYPE html></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>html</span> <span class=\"token attr-name\">lang</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>en<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>head</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>meta</span> <span class=\"token attr-name\">charset</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>UTF-8<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>title</span><span class=\"token punctuation\">></span></span>Title<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>title</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>text/javascript<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>list.js<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>head</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>body</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>h1</span><span class=\"token punctuation\">></span></span>Todo List<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>h1</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>ul</span><span class=\"token punctuation\">></span></span>\n        <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>li</span><span class=\"token punctuation\">></span></span>\"new\" - Add A Todo<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>li</span><span class=\"token punctuation\">></span></span>\n        <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>li</span><span class=\"token punctuation\">></span></span>\"list\" - List All todos<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>li</span><span class=\"token punctuation\">></span></span>\n        <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>li</span><span class=\"token punctuation\">></span></span>\"quit\" - Quit App<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>li</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>ul</span><span class=\"token punctuation\">></span></span>\n\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>body</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>html</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<p>list.js</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">var</span> todos <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"Buy new turtle\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">var</span> input <span class=\"token operator\">=</span> <span class=\"token function\">prompt</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"What would you like to do?\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">while</span><span class=\"token punctuation\">(</span>input <span class=\"token operator\">!==</span> <span class=\"token string\">\"quit\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n  <span class=\"token comment\">// handle input</span>\n  <span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>input <span class=\"token operator\">===</span> <span class=\"token string\">\"list\"</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    todos<span class=\"token punctuation\">.</span><span class=\"token function\">forEach</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">todo</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n      console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>todos<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>input <span class=\"token operator\">===</span> <span class=\"token string\">\"new\"</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token comment\">// ask for new todo</span>\n    <span class=\"token keyword\">var</span> newTodo <span class=\"token operator\">=</span> <span class=\"token function\">prompt</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Enter new todo\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token comment\">// add to todos array</span>\n    todos<span class=\"token punctuation\">.</span><span class=\"token function\">push</span><span class=\"token punctuation\">(</span>newTodo<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token comment\">// ask again for new input</span>\n  input <span class=\"token operator\">=</span> <span class=\"token function\">prompt</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"What would you like to do?\"</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">}</span>\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"ok you quit the app\"</span><span class=\"token punctuation\">)</span></code></pre></div>\n<hr>\n<h2 id=\"131-array-iteration\" style=\"position:relative;\"><a href=\"#131-array-iteration\" aria-label=\"131 array iteration permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>131. Array Iteration</h2>\n<ul>\n<li>Slides: <a href=\"http://webdev.slides.com/coltsteele/javascript-basics-20-21-22-63\">Array Iteration by Colt Steele</a></li>\n<li>MDN: <a href=\"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Loops_and_iteration\">Loops and iteration - JavaScript, MDN</a></li>\n</ul>\n<p><strong>For Loop</strong>\nTo loop over an array using a for loop, we need to make use of the array's  length property</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">var</span> colors <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"red\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"orange\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"yellow\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"green\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">for</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">var</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> colors<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>colors<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n<span class=\"token comment\">//red</span>\n<span class=\"token comment\">//orange</span>\n<span class=\"token comment\">//yellow</span>\n<span class=\"token comment\">//green</span></code></pre></div>\n<p><strong>ForEach</strong>\nJavaScript provides an easy built-in way of iterating over an array: ForEach\n<code class=\"language-text\">arr.forEach(someFunction)</code></p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">var</span> colors <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"red\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"orange\"</span><span class=\"token punctuation\">,</span><span class=\"token string\">\"yellow\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"green\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\ncolors<span class=\"token punctuation\">.</span><span class=\"token function\">forEach</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">color</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n<span class=\"token comment\">//color is a placeholder, call it whatever you want</span>\n  console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>color<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">//red</span>\n<span class=\"token comment\">//orange</span>\n<span class=\"token comment\">//yellow</span>\n<span class=\"token comment\">//green</span>\n\ncolors<span class=\"token punctuation\">.</span><span class=\"token function\">forEach</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">iLoveDogs</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\tconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"INSIDE THE FOREACH \"</span> <span class=\"token operator\">+</span> iLoveDogs<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">//INSIDE THE FOREACH red</span>\n<span class=\"token comment\">//INSIDE THE FOREACH orange</span>\n<span class=\"token comment\">//INSIDE THE FOREACH yellow</span>\n<span class=\"token comment\">//INSIDE THE FOREACH green</span></code></pre></div>\n<p><strong>Exercise</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">var</span> numbers <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span><span class=\"token number\">3</span><span class=\"token punctuation\">,</span><span class=\"token number\">4</span><span class=\"token punctuation\">,</span><span class=\"token number\">5</span><span class=\"token punctuation\">,</span><span class=\"token number\">6</span><span class=\"token punctuation\">,</span><span class=\"token number\">7</span><span class=\"token punctuation\">,</span><span class=\"token number\">8</span><span class=\"token punctuation\">,</span><span class=\"token number\">9</span><span class=\"token punctuation\">,</span><span class=\"token number\">10</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\nnumbers<span class=\"token punctuation\">.</span><span class=\"token function\">forEach</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">color</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>color <span class=\"token operator\">%</span> <span class=\"token number\">3</span> <span class=\"token operator\">===</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\tconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>color<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">//3</span>\n<span class=\"token comment\">//6</span>\n<span class=\"token comment\">//9</span></code></pre></div>\n<p><strong>Exercise2</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span><span class=\"token number\">3</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span><span class=\"token function\">forEach</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">el<span class=\"token punctuation\">,</span> i<span class=\"token punctuation\">,</span> arr</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>el<span class=\"token punctuation\">,</span> i<span class=\"token punctuation\">,</span> arr<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">// 1 0 [1, 2, 3]</span>\n<span class=\"token comment\">// 2 1 [1, 2, 3]</span>\n<span class=\"token comment\">// 3 2 [1, 2, 3]</span></code></pre></div>\n<p>Q. I am wondering exactly how that function works..</p>\n<hr>\n<h2 id=\"134-todo-list-app---upgrade\" style=\"position:relative;\"><a href=\"#134-todo-list-app---upgrade\" aria-label=\"134 todo list app   upgrade permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>134. Todo List App - Upgrade!</h2>\n<p>list.html</p>\n<div class=\"gatsby-highlight\" data-language=\"html\"><pre class=\"language-html\"><code class=\"language-html\"><span class=\"token doctype\">&lt;!DOCTYPE html></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>html</span> <span class=\"token attr-name\">lang</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>en<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>head</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>meta</span> <span class=\"token attr-name\">charset</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>UTF-8<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>title</span><span class=\"token punctuation\">></span></span>Title<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>title</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>script</span> <span class=\"token attr-name\">type</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>text/javascript<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">src</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>list.js<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token script\"></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>script</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>head</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>body</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>h1</span><span class=\"token punctuation\">></span></span>Todo List<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>h1</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>ul</span><span class=\"token punctuation\">></span></span>\n        <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>li</span><span class=\"token punctuation\">></span></span>\"new\" - Add A Todo<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>li</span><span class=\"token punctuation\">></span></span>\n        <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>li</span><span class=\"token punctuation\">></span></span>\"list\" - List All todos<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>li</span><span class=\"token punctuation\">></span></span>\n        <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>li</span><span class=\"token punctuation\">></span></span>\"delete\" - Remove a Specific Todo<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>li</span><span class=\"token punctuation\">></span></span>\n        <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>li</span><span class=\"token punctuation\">></span></span>\"quit\" - Quit App<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>li</span><span class=\"token punctuation\">></span></span>\n    <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>ul</span><span class=\"token punctuation\">></span></span>\n\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>body</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>html</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<p>list.js</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">var</span> todos <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"Buy New Turtle\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">var</span> input <span class=\"token operator\">=</span> <span class=\"token function\">prompt</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"What would you like to do?\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">while</span><span class=\"token punctuation\">(</span>input <span class=\"token operator\">!==</span> <span class=\"token string\">\"quit\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n  <span class=\"token comment\">//handle input</span>\n  <span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>input <span class=\"token operator\">===</span> <span class=\"token string\">\"list\"</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token function\">printList</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>input <span class=\"token operator\">===</span> <span class=\"token string\">\"new\"</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token function\">addTodo</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>input <span class=\"token operator\">===</span> <span class=\"token string\">\"delete\"</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token function\">deleteTodo</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token comment\">//ask again for new input</span>\n  input <span class=\"token operator\">=</span> <span class=\"token function\">prompt</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"What would you like to do?\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"OK, YOU QUIT THE APP\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">printList</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"**********\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  todos<span class=\"token punctuation\">.</span><span class=\"token function\">forEach</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">todo<span class=\"token punctuation\">,</span> index</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n    console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>index <span class=\"token operator\">+</span> <span class=\"token string\">\": \"</span> <span class=\"token operator\">+</span> todo<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"**********\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">addTodo</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n  <span class=\"token comment\">//ask for new todo</span>\n  <span class=\"token keyword\">var</span> newTodo <span class=\"token operator\">=</span> <span class=\"token function\">prompt</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Enter new todo\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token comment\">//add to todos array</span>\n  todos<span class=\"token punctuation\">.</span><span class=\"token function\">push</span><span class=\"token punctuation\">(</span>newTodo<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>newTodo <span class=\"token operator\">+</span> <span class=\"token string\">\" added to list\"</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">deleteTodo</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">var</span> index <span class=\"token operator\">=</span> <span class=\"token function\">prompt</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Enter index of todo to delete\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  todos<span class=\"token punctuation\">.</span><span class=\"token function\">splice</span><span class=\"token punctuation\">(</span>index<span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Todo Removed\"</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<hr>\n<h2 id=\"135-array-problem-set\" style=\"position:relative;\"><a href=\"#135-array-problem-set\" aria-label=\"135 array problem set permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>135. Array Problem Set</h2>\n<h3 id=\"printreverse\" style=\"position:relative;\"><a href=\"#printreverse\" aria-label=\"printreverse permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>printReverse()</h3>\n<p>Write a function printReverse() that takes an array as an argument and prints out the elements in the array in reverse order (don't actually revese the array itself.</p>\n<p>printReverse - My solution</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">let</span> arr <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">let</span> arr2 <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"a\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"b\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"c\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">printReverse</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">array</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>array <span class=\"token operator\">===</span> <span class=\"token keyword\">undefined</span> <span class=\"token operator\">||</span> array<span class=\"token punctuation\">.</span>length <span class=\"token operator\">===</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\t  <span class=\"token comment\">// array empty or does not exist</span>\n  \tconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"This array is empty!\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  \t<span class=\"token keyword\">return</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span>\n  <span class=\"token keyword\">for</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">var</span> i <span class=\"token operator\">=</span> array<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> i <span class=\"token operator\">>=</span> <span class=\"token number\">0</span> <span class=\"token punctuation\">;</span> i<span class=\"token operator\">--</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>array<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token function\">printReverse</span><span class=\"token punctuation\">(</span>arr<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">//4</span>\n<span class=\"token comment\">//3</span>\n<span class=\"token comment\">//2</span>\n<span class=\"token comment\">//1</span>\n<span class=\"token function\">printReverse</span><span class=\"token punctuation\">(</span>arr2<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">//c</span>\n<span class=\"token comment\">//b</span>\n<span class=\"token comment\">//a</span></code></pre></div>\n<p>printReverse -  Colt Steele</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">function</span> <span class=\"token function\">printReverse</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">arr</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">for</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">var</span> i <span class=\"token operator\">=</span> arr<span class=\"token punctuation\">.</span>length <span class=\"token operator\">-</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">>=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i<span class=\"token operator\">--</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n\t\tconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>arr<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token function\">printReverse</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">[</span><span class=\"token number\">3</span><span class=\"token punctuation\">,</span><span class=\"token number\">6</span><span class=\"token punctuation\">,</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span><span class=\"token number\">5</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">//5</span>\n<span class=\"token comment\">//2</span>\n<span class=\"token comment\">//6</span>\n<span class=\"token comment\">//3</span></code></pre></div>\n<hr>\n<h3 id=\"isuniform\" style=\"position:relative;\"><a href=\"#isuniform\" aria-label=\"isuniform permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>isUniform()</h3>\n<p>Write a function isUniform() which takes an array as an argument\nand return true if all elements in the array are identical.</p>\n<p>isUniform -  My solution</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">let</span> arr <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">let</span> arr2 <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">let</span> arr3 <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"a\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"b\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"c\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">let</span> arr4 <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"b\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"b\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"b\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">isUniform</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">array</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>array <span class=\"token operator\">===</span> <span class=\"token keyword\">undefined</span> <span class=\"token operator\">||</span> array<span class=\"token punctuation\">.</span>length <span class=\"token operator\">===</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token comment\">// array empty or does not exist</span>\n    console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"This array is empty!\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">return</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token keyword\">let</span> temp <span class=\"token operator\">=</span> array<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">for</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">let</span> i <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> array<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>temp <span class=\"token operator\">!==</span> array<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n      console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"false\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token keyword\">return</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">}</span>\n\n  console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"true\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token function\">isUniform</span><span class=\"token punctuation\">(</span>arr<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//true</span>\n<span class=\"token function\">isUniform</span><span class=\"token punctuation\">(</span>arr2<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//false</span>\n<span class=\"token function\">isUniform</span><span class=\"token punctuation\">(</span>arr3<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//false</span>\n<span class=\"token function\">isUniform</span><span class=\"token punctuation\">(</span>arr4<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//true</span></code></pre></div>\n<p>isUniform -  Colt Steele</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">function</span> <span class=\"token function\">isUniform</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">arr</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">var</span> first <span class=\"token operator\">=</span> arr<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token keyword\">for</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">var</span> i <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> arr<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n\t\t<span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>arr<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">!==</span> first<span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n\t\t\t<span class=\"token keyword\">return</span> <span class=\"token boolean\">false</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token punctuation\">}</span>\n\t<span class=\"token punctuation\">}</span>\n\t<span class=\"token keyword\">return</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<hr>\n<h3 id=\"sumarray\" style=\"position:relative;\"><a href=\"#sumarray\" aria-label=\"sumarray permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>sumArray()</h3>\n<p>Write a function sumArray() that accept an array of numbers and return the sum of all numbers in the array.</p>\n<p>sumArray -  My solution</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">let</span> arr <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">3</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">let</span> arr2 <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">10</span><span class=\"token punctuation\">,</span> <span class=\"token number\">3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">10</span><span class=\"token punctuation\">,</span> <span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">let</span> arr3 <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token operator\">-</span><span class=\"token number\">5</span><span class=\"token punctuation\">,</span> <span class=\"token number\">100</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">sumArray</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">array</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>array <span class=\"token operator\">===</span> <span class=\"token keyword\">undefined</span> <span class=\"token operator\">||</span> array<span class=\"token punctuation\">.</span>length <span class=\"token operator\">===</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token comment\">// array empty or does not exist</span>\n    console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"This array is empty!\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">return</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token keyword\">let</span> result <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">for</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">let</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> array<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    result <span class=\"token operator\">+=</span> array<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token function\">sumArray</span><span class=\"token punctuation\">(</span>arr<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//6</span>\n<span class=\"token function\">sumArray</span><span class=\"token punctuation\">(</span>arr2<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//27</span>\n<span class=\"token function\">sumArray</span><span class=\"token punctuation\">(</span>arr3<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//95</span></code></pre></div>\n<p>sumArray -  Colt Steele</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">function</span> <span class=\"token function\">sumArray</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">arr</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">var</span> total <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span>\n\tarr<span class=\"token punctuation\">.</span><span class=\"token function\">forEach</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">element</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n\t\ttotal <span class=\"token operator\">+=</span> element<span class=\"token punctuation\">;</span>\n\t<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token keyword\">return</span> total<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<hr>\n<h3 id=\"max\" style=\"position:relative;\"><a href=\"#max\" aria-label=\"max permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>max()</h3>\n<p>Write a function max() that accepts an array of numbers and returns the maximum number in the array.</p>\n<p>max -  My solution</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">let</span> arr <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">,</span> <span class=\"token number\">3</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">let</span> arr2 <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token number\">10</span><span class=\"token punctuation\">,</span> <span class=\"token number\">3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">10</span><span class=\"token punctuation\">,</span> <span class=\"token number\">4</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">let</span> arr3 <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token operator\">-</span><span class=\"token number\">5</span><span class=\"token punctuation\">,</span> <span class=\"token number\">100</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">max</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">array</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>array <span class=\"token operator\">===</span> <span class=\"token keyword\">undefined</span> <span class=\"token operator\">||</span> array<span class=\"token punctuation\">.</span>length <span class=\"token operator\">===</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token comment\">// array empty or does not exist</span>\n    console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"This array is empty!\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">return</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>array<span class=\"token punctuation\">.</span>length <span class=\"token operator\">===</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>array<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">let</span> result <span class=\"token operator\">=</span> array<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">for</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">let</span> i <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> array<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>array<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">></span> result<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        result <span class=\"token operator\">=</span> array<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n      <span class=\"token punctuation\">}</span>\n    <span class=\"token punctuation\">}</span>\n    console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>result<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token function\">max</span><span class=\"token punctuation\">(</span>arr<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//3</span>\n<span class=\"token function\">max</span><span class=\"token punctuation\">(</span>arr2<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//10</span>\n<span class=\"token function\">max</span><span class=\"token punctuation\">(</span>arr3<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//100</span></code></pre></div>\n<p>max -  Colt Steele</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">function</span> <span class=\"token function\">max</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">arr</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">var</span> max <span class=\"token operator\">=</span> arr<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\t<span class=\"token keyword\">for</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">var</span> i <span class=\"token operator\">=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> arr<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n\t\t<span class=\"token keyword\">if</span><span class=\"token punctuation\">(</span>arr<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span> <span class=\"token operator\">></span> max<span class=\"token punctuation\">)</span><span class=\"token punctuation\">{</span>\n\t\t\tmax <span class=\"token operator\">=</span> arr<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\t\t<span class=\"token punctuation\">}</span>\n\t<span class=\"token punctuation\">}</span>\n\t<span class=\"token keyword\">return</span> max<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<hr>\n<h3 id=\"bonus-exercise-1\" style=\"position:relative;\"><a href=\"#bonus-exercise-1\" aria-label=\"bonus exercise 1 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Bonus Exercise 1</h3>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">let</span> colors <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"red\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"orange\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"yellow\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">myForEach</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">arr<span class=\"token punctuation\">,</span> func</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token comment\">// loop through array</span>\n  <span class=\"token keyword\">for</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">var</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> arr<span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token comment\">// call func for each item in array</span>\n    <span class=\"token function\">func</span><span class=\"token punctuation\">(</span>arr<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token function\">myForEach</span><span class=\"token punctuation\">(</span>colors<span class=\"token punctuation\">,</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span><span class=\"token function\">alert</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"Hi\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token function\">myForEach</span><span class=\"token punctuation\">(</span>colors<span class=\"token punctuation\">,</span> <span class=\"token keyword\">function</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">color</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>color<span class=\"token punctuation\">)</span><span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">//red</span>\n<span class=\"token comment\">//orange</span>\n<span class=\"token comment\">//yellow</span></code></pre></div>\n<hr>\n<h3 id=\"bonus-exercise-2\" style=\"position:relative;\"><a href=\"#bonus-exercise-2\" aria-label=\"bonus exercise 2 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Bonus Exercise 2</h3>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token class-name\">Array</span><span class=\"token punctuation\">.</span>prototype<span class=\"token punctuation\">.</span><span class=\"token function-variable function\">myForEach</span> <span class=\"token operator\">=</span> <span class=\"token keyword\">function</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\">func</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">for</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">let</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> <span class=\"token keyword\">this</span><span class=\"token punctuation\">.</span>length<span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token function\">func</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">this</span><span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n\n\n<span class=\"token keyword\">let</span> friends <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"charlie\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"dave\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"maddy\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"caitlin\"</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n\nfriends<span class=\"token punctuation\">.</span><span class=\"token function\">myForEach</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">function</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\">name</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  console<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"I love \"</span> <span class=\"token operator\">+</span> name<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">//I love charlie</span>\n<span class=\"token comment\">//I love dave</span>\n<span class=\"token comment\">//I love maddy</span>\n<span class=\"token comment\">//I love caitlin</span></code></pre></div>","excerpt":"The Web Developer Bootcamp - Udemy 116. Introduction to Functions Intro to…"}}}},{"node":{"title":"GDI를 사용한 Win32 응용프로그램 작성","id":"d6c4067e-e4bf-57ed-aa09-cc1bbf4787f6","slug":"gdi-lines","publishDate":"March 24, 2014","heroImage":{"title":"LineDrawingApplication Report6","fluid":{"aspectRatio":1.2218934911242603,"src":"//images.ctfassets.net/e1rkozd9gki4/1Mv4cExAdOYhv9JAzDDpX9/61f9ed64c0c6c1c6ca3f02e41be8506d/LineDrawingApplication_Report6.jpg?w=1800&q=50","srcSet":"//images.ctfassets.net/e1rkozd9gki4/1Mv4cExAdOYhv9JAzDDpX9/61f9ed64c0c6c1c6ca3f02e41be8506d/LineDrawingApplication_Report6.jpg?w=413&h=338&q=50 413w","srcWebp":"//images.ctfassets.net/e1rkozd9gki4/1Mv4cExAdOYhv9JAzDDpX9/61f9ed64c0c6c1c6ca3f02e41be8506d/LineDrawingApplication_Report6.jpg?w=1800&q=50&fm=webp","srcSetWebp":"//images.ctfassets.net/e1rkozd9gki4/1Mv4cExAdOYhv9JAzDDpX9/61f9ed64c0c6c1c6ca3f02e41be8506d/LineDrawingApplication_Report6.jpg?w=413&h=338&q=50&fm=webp 413w","sizes":"(max-width: 1800px) 100vw, 1800px"}},"body":{"childMarkdownRemark":{"timeToRead":10,"html":"<p>선분 그리기 응용프로그램</p>\n<h2 id=\"실행-화면-및-소스-설명\" style=\"position:relative;\"><a href=\"#%EC%8B%A4%ED%96%89-%ED%99%94%EB%A9%B4-%EB%B0%8F-%EC%86%8C%EC%8A%A4-%EC%84%A4%EB%AA%85\" aria-label=\"실행 화면 및 소스 설명 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>실행 화면 및 소스 설명</h2>\n<h3 id=\"1-처음-실행한-모습\" style=\"position:relative;\"><a href=\"#1-%EC%B2%98%EC%9D%8C-%EC%8B%A4%ED%96%89%ED%95%9C-%EB%AA%A8%EC%8A%B5\" aria-label=\"1 처음 실행한 모습 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1. 처음 실행한 모습</h3>\n<p><span\n        class=\"gatsby-resp-image-wrapper\"\n        style=\"position: relative; display: block; ; max-width: 429px; margin-left: auto; margin-right: auto;\"\n      >\n        <span\n          class=\"gatsby-resp-image-background-image\"\n          style=\"padding-bottom: 53.379953379953385%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAUgBSAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAVACgDASIAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAAAAAAAAMEBgcC/8QALxAAAAQBCAgHAAAAAAAAAAAAAAECAwQGERMUISMxoQUHEjNBQmNyF1FhcZGx0f/EABYBAQEBAAAAAAAAAAAAAAAAAAABAv/EABkRAQEAAwEAAAAAAAAAAAAAAAEAAhESMf/aAAwDAQACEQMRAD8A6miRcOts1G8U6iI0zJOz3ttyFeI1dQL+zfqI+aecyPOwbBjcN9pfQkF200XPfByS5ntGy+avOnVj8i1DardAwbiVsFEIUnA6dX6NwAdM5LKOyG0dRqNSnlTJPF1RgNQ7uV9pgIg+lszyDQtUZjLhu75S4+gkrnTzAAsyudPMK508wAJeHYy6Xd8p8QAApf/Z'); background-size: cover; display: block;\"\n        >\n          <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"LineDrawingApplication Report1\"\n        title=\"\"\n        src=\"https://images.ctfassets.net/e1rkozd9gki4/GfWSVGq087OAzmXAISrF0/d0533fa0715671080f3fa0571cf515aa/LineDrawingApplication_Report1.jpg\"\n        srcset=\"https://images.ctfassets.net/e1rkozd9gki4/GfWSVGq087OAzmXAISrF0/d0533fa0715671080f3fa0571cf515aa/LineDrawingApplication_Report1.jpg?w=107 107w,\nhttps://images.ctfassets.net/e1rkozd9gki4/GfWSVGq087OAzmXAISrF0/d0533fa0715671080f3fa0571cf515aa/LineDrawingApplication_Report1.jpg?w=215 215w,\nhttps://images.ctfassets.net/e1rkozd9gki4/GfWSVGq087OAzmXAISrF0/d0533fa0715671080f3fa0571cf515aa/LineDrawingApplication_Report1.jpg?w=429 429w\"\n        sizes=\"(max-width: 429px) 100vw, 429px\"\n        loading=\"lazy\"\n      />\n        </span>\n      </span></p>\n<p><span\n        class=\"gatsby-resp-image-wrapper\"\n        style=\"position: relative; display: block; ; max-width: 230px; margin-left: auto; margin-right: auto;\"\n      >\n        <span\n          class=\"gatsby-resp-image-background-image\"\n          style=\"padding-bottom: 33.91304347826087%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEATgBOAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAOACgDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAUCAwYE/8QALRAAAQIFAgQDCQAAAAAAAAAAAQIDAAQREyEFEiIxUWEVQZEkMlJTYnGBofD/xAAWAQADAAAAAAAAAAAAAAAAAAAAAQT/xAAcEQABBQEBAQAAAAAAAAAAAAAEAAEVUrECMQX/2gAMAwEAAhEDEQA/AMw5q770vLgp05G9KSAF7VDBHEafTn7iOdGpurCj7KAOqzk0rQYhBLTMm02EvSN5dcqLqk4rXkO1R+YhflrQSZTj+MOnp0/uUWMeQ3nWKJ/nDP7zq0bepOOOrRWVTtIG4uYNehpFLmsuNr222lYBqlVRyhKJmT2tgyAqk1WbquIUpTtnMQL0tfKhKm35Iunt5+vrDkCbYlHC01O/HHPkoghHdl9rgEsaq903Dw4/cEEgRbERotNX/9k='); background-size: cover; display: block;\"\n        >\n          <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"LineDrawingApplication Report2\"\n        title=\"\"\n        src=\"https://images.ctfassets.net/e1rkozd9gki4/4mYu6l36wLYPvV2EsjUurE/c483e15c548eb380298a8af111ed813f/LineDrawingApplication_Report2.jpg\"\n        srcset=\"https://images.ctfassets.net/e1rkozd9gki4/4mYu6l36wLYPvV2EsjUurE/c483e15c548eb380298a8af111ed813f/LineDrawingApplication_Report2.jpg?w=58 58w,\nhttps://images.ctfassets.net/e1rkozd9gki4/4mYu6l36wLYPvV2EsjUurE/c483e15c548eb380298a8af111ed813f/LineDrawingApplication_Report2.jpg?w=115 115w,\nhttps://images.ctfassets.net/e1rkozd9gki4/4mYu6l36wLYPvV2EsjUurE/c483e15c548eb380298a8af111ed813f/LineDrawingApplication_Report2.jpg?w=230 230w\"\n        sizes=\"(max-width: 230px) 100vw, 230px\"\n        loading=\"lazy\"\n      />\n        </span>\n      </span></p>\n<div class=\"gatsby-highlight\" data-language=\"cpp\"><pre class=\"language-cpp\"><code class=\"language-cpp\">LRESULT CALLBACK <span class=\"token function\">WndProc</span><span class=\"token punctuation\">(</span>HWND hWnd<span class=\"token punctuation\">,</span> UINT message<span class=\"token punctuation\">,</span> WPARAM wParam<span class=\"token punctuation\">,</span> LPARAM lParam<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">switch</span> <span class=\"token punctuation\">(</span>message<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">case</span> WM_RBUTTONDOWN<span class=\"token operator\">:</span>\n      <span class=\"token keyword\">double</span> currentX <span class=\"token operator\">=</span> <span class=\"token function\">LOWORD</span><span class=\"token punctuation\">(</span>lParam<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//</span>\n      <span class=\"token keyword\">double</span> currentY <span class=\"token operator\">=</span> <span class=\"token function\">HIWORD</span><span class=\"token punctuation\">(</span>lParam<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">//</span>\n      <span class=\"token function\">TRACE</span><span class=\"token punctuation\">(</span><span class=\"token function\">_T</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"\\n오른쪽 마우스 버튼 좌표 = (%d, %d)\\n\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span><span class=\"token punctuation\">)</span> currentX<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span><span class=\"token punctuation\">)</span> currentY<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span></code></pre></div>\n<p>처음 실행한 상태에서 오른쪽 버튼을 클릭하게 되면 , WndProc함수에서\nWM_RBUTTODWN이 적용이 되고 현재 좌표를 알려준다.</p>\n<h3 id=\"2메뉴\" style=\"position:relative;\"><a href=\"#2%EB%A9%94%EB%89%B4\" aria-label=\"2메뉴 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2.메뉴</h3>\n<p>총 3개의 메뉴가 있다.\n<span\n        class=\"gatsby-resp-image-wrapper\"\n        style=\"position: relative; display: block; ; max-width: 186px; margin-left: auto; margin-right: auto;\"\n      >\n        <span\n          class=\"gatsby-resp-image-background-image\"\n          style=\"padding-bottom: 10.21505376344086%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAOwA6AAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAEACgDASIAAhEBAxEB/8QAGAABAQADAAAAAAAAAAAAAAAAAAMBBAf/xAAkEAABBAIBAgcAAAAAAAAAAAABAAIDBBEhEjFBBRMiUWGB0f/EABcBAAMBAAAAAAAAAAAAAAAAAAABAgP/xAAWEQEBAQAAAAAAAAAAAAAAAAAAEQH/2gAMAwEAAhEDEQA/AOo3hOLbXNvW2iR2S1suAPSdD26ZVLLpjExgszt4EO5B+zgnRJ6hEW0yIa1CSxxjlNqdxc3Yc7I7fqvdFgmCRt60wPkjBYyTDcD6zvvtERAz4WZ2wwSvu2ZHccHzJMg66n5REVTCf//Z'); background-size: cover; display: block;\"\n        >\n          <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"LineDrawingApplication Report4\"\n        title=\"\"\n        src=\"https://images.ctfassets.net/e1rkozd9gki4/LcuyrNvZH5nBNkWiy7xNc/5262f898193297d5b2529eca89a0c209/LineDrawingApplication_Report4.jpg\"\n        srcset=\"https://images.ctfassets.net/e1rkozd9gki4/LcuyrNvZH5nBNkWiy7xNc/5262f898193297d5b2529eca89a0c209/LineDrawingApplication_Report4.jpg?w=47 47w,\nhttps://images.ctfassets.net/e1rkozd9gki4/LcuyrNvZH5nBNkWiy7xNc/5262f898193297d5b2529eca89a0c209/LineDrawingApplication_Report4.jpg?w=93 93w,\nhttps://images.ctfassets.net/e1rkozd9gki4/LcuyrNvZH5nBNkWiy7xNc/5262f898193297d5b2529eca89a0c209/LineDrawingApplication_Report4.jpg?w=186 186w\"\n        sizes=\"(max-width: 186px) 100vw, 186px\"\n        loading=\"lazy\"\n      />\n        </span>\n      </span></p>\n<p>파일에서 끝내기를 누르게 되면 현재 돌아가고 있는 프로그램이 종료가 되\n고 창이 꺼진다.\n<span\n        class=\"gatsby-resp-image-wrapper\"\n        style=\"position: relative; display: block; ; max-width: 178px; margin-left: auto; margin-right: auto;\"\n      >\n        <span\n          class=\"gatsby-resp-image-background-image\"\n          style=\"padding-bottom: 29.213483146067414%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAKwArAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAMACgDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAMCBAUH/8QAKhAAAgEDAwIDCQAAAAAAAAAAAQIDAAQREiFBBVEGE9EUIjEyQoGhwfD/xAAWAQEBAQAAAAAAAAAAAAAAAAACAAH/xAAXEQEBAQEAAAAAAAAAAAAAAAAAERIB/9oADAMBAAIRAxEAPwDpLeEpJSsyzIuoqxGrY4XGMY52P2qdjHbRWJgt78KrjIaGRg2FbGSdPcgVvyQujlFuZQo2A930pCWKRKFjkZFAIAVEAAJyfp5p6GK1jbTysZouoyy6WKnMhxzwR/YpnUrG7nhZ/bpoNMbA+VJ353XORjgirCwNHkJcSKD2Cj9UPA8iMjXU2lhg/L6VaUKt+hXCMZD1S6k1PrALnAGxxjtt+aK3FGlQB8AMUUddbH//2Q=='); background-size: cover; display: block;\"\n        >\n          <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"LineDrawingApplication Report3\"\n        title=\"\"\n        src=\"https://images.ctfassets.net/e1rkozd9gki4/25RUA8pIbaq2dKWgYpFpgK/864cee26fbe6cc0870c2e34375d09b20/LineDrawingApplication_Report3.jpg\"\n        srcset=\"https://images.ctfassets.net/e1rkozd9gki4/25RUA8pIbaq2dKWgYpFpgK/864cee26fbe6cc0870c2e34375d09b20/LineDrawingApplication_Report3.jpg?w=45 45w,\nhttps://images.ctfassets.net/e1rkozd9gki4/25RUA8pIbaq2dKWgYpFpgK/864cee26fbe6cc0870c2e34375d09b20/LineDrawingApplication_Report3.jpg?w=89 89w,\nhttps://images.ctfassets.net/e1rkozd9gki4/25RUA8pIbaq2dKWgYpFpgK/864cee26fbe6cc0870c2e34375d09b20/LineDrawingApplication_Report3.jpg?w=178 178w\"\n        sizes=\"(max-width: 178px) 100vw, 178px\"\n        loading=\"lazy\"\n      />\n        </span>\n      </span></p>\n<p>색상 메뉴를 클릭하게 되면 색을 골를 수 있는 버튼들이 있는 창이 따로 뜨게 된다. 원하는 색을 클릭하고 선택을 누르게 되면 선의 색이 변경이 가능하다. 취소를 누를 경우 색은 변경하지 않고 따로 뜬 색상 고르는 창이 꺼지게 된다.\n<span\n        class=\"gatsby-resp-image-wrapper\"\n        style=\"position: relative; display: block; ; max-width: 418px; margin-left: auto; margin-right: auto;\"\n      >\n        <span\n          class=\"gatsby-resp-image-background-image\"\n          style=\"padding-bottom: 44.73684210526316%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAcgByAAD/2wBDAAwICQoJBwwKCgoNDQwOEh4TEhAQEiQaGxUeKyYtLComKSkvNUQ6LzJAMykpO1E8QEZJTE1MLjlUWlNKWURLTEn/2wBDAQ0NDRIQEiMTEyNJMSkxSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUlJSUn/wAARCAASACgDASIAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAAAAAAAAECAwQH/8QAKhAAAQMCBAUDBQAAAAAAAAAAAQACAxESBBMhIjEyQVFSBWFxFIGRoeH/xAAWAQEBAQAAAAAAAAAAAAAAAAABAAL/xAAZEQEBAQEBAQAAAAAAAAAAAAAAAQISEUH/2gAMAwEAAhEDEQA/APRI8NDlNJc4XAHmUZcbpLS0hvlVtFvDU4eOhA2jiPZUe3KeZnSu+NSPwn2wcyqfTQXEX/sKrY4xIW2m0Gl1zaLpqQSQQdPH++6yYL3iUSuo46DWnDtVPVHMYYj0/CTOfK4Fzmt0IeQOvQIuuYEQykkHYeA+UVmerV+OOKR+Sze7lHVSXOJ1JP3REhBNRQ6jsjdpq3Q9wiISJZH5L97uU9URFvLOn//Z'); background-size: cover; display: block;\"\n        >\n          <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"LineDrawingApplication Report5\"\n        title=\"\"\n        src=\"https://images.ctfassets.net/e1rkozd9gki4/12awYrk72qQEZxfBblJh7S/388b42dad2f809cf5d7e39c9d3249872/LineDrawingApplication_Report5.jpg\"\n        srcset=\"https://images.ctfassets.net/e1rkozd9gki4/12awYrk72qQEZxfBblJh7S/388b42dad2f809cf5d7e39c9d3249872/LineDrawingApplication_Report5.jpg?w=105 105w,\nhttps://images.ctfassets.net/e1rkozd9gki4/12awYrk72qQEZxfBblJh7S/388b42dad2f809cf5d7e39c9d3249872/LineDrawingApplication_Report5.jpg?w=209 209w,\nhttps://images.ctfassets.net/e1rkozd9gki4/12awYrk72qQEZxfBblJh7S/388b42dad2f809cf5d7e39c9d3249872/LineDrawingApplication_Report5.jpg?w=418 418w\"\n        sizes=\"(max-width: 418px) 100vw, 418px\"\n        loading=\"lazy\"\n      />\n        </span>\n      </span>\n<span\n        class=\"gatsby-resp-image-wrapper\"\n        style=\"position: relative; display: block; ; max-width: 413px; margin-left: auto; margin-right: auto;\"\n      >\n        <span\n          class=\"gatsby-resp-image-background-image\"\n          style=\"padding-bottom: 81.8401937046005%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAZQBlAAD/2wBDAAkGBwgHBgkICAgKCgkLDhcPDg0NDhwUFREXIh4jIyEeICAlKjUtJScyKCAgLj8vMjc5PDw8JC1CRkE6RjU7PDn/2wBDAQoKCg4MDhsPDxs5JiAmOTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTk5OTn/wAARCAAhACgDASIAAhEBAxEB/8QAGgAAAgMBAQAAAAAAAAAAAAAAAAMBAgYEB//EADQQAAEDAgEFDwUBAAAAAAAAAAEAAgMEERIhMTShsQUGBxMUIkFSYXFyc4GR8DJRYsHh8f/EABYBAQEBAAAAAAAAAAAAAAAAAAABAv/EABoRAQEBAQADAAAAAAAAAAAAAAABERICIUH/2gAMAwEAAhEDEQA/APR4t6cb4sRlALgC2wtbvXPU7x6WZtuUuDh9Wey1tKb0sLj0sB1KG87D+Rxnu6P17K6mMKeCncFzi6R9SXnK4iYjUuuk4NtyKSQPhlq2uGY8ecmpbBvON+sb+gzJqdUyMpNvMomxPdxs5Iac8n8QtNVHDTTH7MJ1IUyX4135T1KXBlooG9ZjRqy6lcm+NwzuOAfPdLpg7k0LgL2iGHtNv8TcJaQACQxuTtPzaiLMAuSMwyD0V1DRZoClAms0Sfy3bEIrNEn8t2xCoydLo8XgGxMQhESjpQhAqo0eXwHYhCEH/9k='); background-size: cover; display: block;\"\n        >\n          <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"LineDrawingApplication Report6\"\n        title=\"\"\n        src=\"https://images.ctfassets.net/e1rkozd9gki4/1Mv4cExAdOYhv9JAzDDpX9/61f9ed64c0c6c1c6ca3f02e41be8506d/LineDrawingApplication_Report6.jpg\"\n        srcset=\"https://images.ctfassets.net/e1rkozd9gki4/1Mv4cExAdOYhv9JAzDDpX9/61f9ed64c0c6c1c6ca3f02e41be8506d/LineDrawingApplication_Report6.jpg?w=103 103w,\nhttps://images.ctfassets.net/e1rkozd9gki4/1Mv4cExAdOYhv9JAzDDpX9/61f9ed64c0c6c1c6ca3f02e41be8506d/LineDrawingApplication_Report6.jpg?w=207 207w,\nhttps://images.ctfassets.net/e1rkozd9gki4/1Mv4cExAdOYhv9JAzDDpX9/61f9ed64c0c6c1c6ca3f02e41be8506d/LineDrawingApplication_Report6.jpg?w=413 413w\"\n        sizes=\"(max-width: 413px) 100vw, 413px\"\n        loading=\"lazy\"\n      />\n        </span>\n      </span></p>\n<p>아래 소스는 색상 메뉴를 클릭했을 때 나오는 창에 대한 소스이다.</p>\n<div class=\"gatsby-highlight\" data-language=\"cpp\"><pre class=\"language-cpp\"><code class=\"language-cpp\">INT_PTR CALLBACK <span class=\"token function\">ColorProc</span><span class=\"token punctuation\">(</span>HWND hDlg<span class=\"token punctuation\">,</span> UINT message<span class=\"token punctuation\">,</span> WPARAM wParam<span class=\"token punctuation\">,</span> LPARAM lParam<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span> <span class=\"token comment\">//색상  대화  상자의  메시지  처리기 UNREFERENCED_PARAMETER(lParam);</span>\n  <span class=\"token keyword\">switch</span> <span class=\"token punctuation\">(</span>message<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">case</span> WM_INITDIALOG<span class=\"token operator\">:</span>\n    <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>INT_PTR<span class=\"token punctuation\">)</span> TRUE<span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">case</span> WM_COMMAND<span class=\"token operator\">:</span>\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token function\">LOWORD</span><span class=\"token punctuation\">(</span>wParam<span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> IDC_BLACK<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      selectedColor <span class=\"token operator\">=</span> <span class=\"token number\">0x000000</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// black return (INT_PTR)TRUE;</span>\n    <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token function\">LOWORD</span><span class=\"token punctuation\">(</span>wParam<span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> IDC_RED<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      selectedColor <span class=\"token operator\">=</span> <span class=\"token number\">0x0000ff</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// red return (INT_PTR)TRUE;</span>\n    <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token function\">LOWORD</span><span class=\"token punctuation\">(</span>wParam<span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> IDC_GREEN<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      selectedColor <span class=\"token operator\">=</span> <span class=\"token number\">0x00ff00</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// green return (INT_PTR)TRUE;</span>\n    <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token function\">LOWORD</span><span class=\"token punctuation\">(</span>wParam<span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> IDC_BLUE<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      selectedColor <span class=\"token operator\">=</span> <span class=\"token number\">0xff0000</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// blue return (INT_PTR)TRUE;</span>\n    <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token function\">LOWORD</span><span class=\"token punctuation\">(</span>wParam<span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> IDOK<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token comment\">// 현재 컬러를 갱신 currentColor = selectedColor;</span>\n      <span class=\"token function\">EndDialog</span><span class=\"token punctuation\">(</span>hDlg<span class=\"token punctuation\">,</span> <span class=\"token function\">LOWORD</span><span class=\"token punctuation\">(</span>wParam<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>INT_PTR<span class=\"token punctuation\">)</span> TRUE<span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token function\">LOWORD</span><span class=\"token punctuation\">(</span>wParam<span class=\"token punctuation\">)</span> <span class=\"token operator\">==</span> IDCANCEL<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token comment\">// 취소</span>\n      <span class=\"token function\">EndDialog</span><span class=\"token punctuation\">(</span>hDlg<span class=\"token punctuation\">,</span> <span class=\"token function\">LOWORD</span><span class=\"token punctuation\">(</span>wParam<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>INT_PTR<span class=\"token punctuation\">)</span> TRUE<span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token keyword\">return</span> <span class=\"token punctuation\">(</span>INT_PTR<span class=\"token punctuation\">)</span> FALSE<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p><span\n        class=\"gatsby-resp-image-wrapper\"\n        style=\"position: relative; display: block; ; max-width: 189px; margin-left: auto; margin-right: auto;\"\n      >\n        <span\n          class=\"gatsby-resp-image-background-image\"\n          style=\"padding-bottom: 10.052910052910052%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEALQAtAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAEACgDASIAAhEBAxEB/8QAGAABAQADAAAAAAAAAAAAAAAAAAMEBQf/xAAkEAACAQQABQUAAAAAAAAAAAABAgMABBEhBRIxQXETIlFh0f/EABYBAQEBAAAAAAAAAAAAAAAAAAEDAP/EABcRAQEBAQAAAAAAAAAAAAAAAAEAESH/2gAMAwEAAhEDEQA/AOo3onF6pW+u1EjZKrKQB7TofHSsuYzPZqBczpyENlZCCd9Ce4pSr4U6dg84VJGu7hyyZPO+R0H7Wu4kbkMsi310gkfaK4AGEI1rP35pShOSV+FvPGsLtdTyFkXPqPnsN+aUpSBa/9k='); background-size: cover; display: block;\"\n        >\n          <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"LineDrawingApplication Report7\"\n        title=\"\"\n        src=\"https://images.ctfassets.net/e1rkozd9gki4/66tBmXlL3Iu8gVJiRVWrR2/3357cc099bc183e390272864835ca15f/LineDrawingApplication_Report7.jpg\"\n        srcset=\"https://images.ctfassets.net/e1rkozd9gki4/66tBmXlL3Iu8gVJiRVWrR2/3357cc099bc183e390272864835ca15f/LineDrawingApplication_Report7.jpg?w=47 47w,\nhttps://images.ctfassets.net/e1rkozd9gki4/66tBmXlL3Iu8gVJiRVWrR2/3357cc099bc183e390272864835ca15f/LineDrawingApplication_Report7.jpg?w=95 95w,\nhttps://images.ctfassets.net/e1rkozd9gki4/66tBmXlL3Iu8gVJiRVWrR2/3357cc099bc183e390272864835ca15f/LineDrawingApplication_Report7.jpg?w=189 189w\"\n        sizes=\"(max-width: 189px) 100vw, 189px\"\n        loading=\"lazy\"\n      />\n        </span>\n      </span>\n<span\n        class=\"gatsby-resp-image-wrapper\"\n        style=\"position: relative; display: block; ; max-width: 146px; margin-left: auto; margin-right: auto;\"\n      >\n        <span\n          class=\"gatsby-resp-image-background-image\"\n          style=\"padding-bottom: 36.3013698630137%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAIwAkAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAPACgDASIAAhEBAxEB/8QAGQAAAwADAAAAAAAAAAAAAAAAAAMEBQYH/8QALRAAAQMDAgQCCwAAAAAAAAAAAQIDBAAREgVREyFBgTEyBhQiUlVhkqGi0dL/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAgH/xAAYEQEBAQEBAAAAAAAAAAAAAAAAARECEv/aAAwDAQACEQMRAD8A6HN0LUZRecZQsLcQQDik88r5Xz2+VJb9HtRDrwdDmCrFGKWyU+zY+Kt63BTshizYhvOWHmSpFvuoVipunCdJdedhTAXWg0oJU14BVxzJv03tV6k/TGpcSLwuE6nnewx2F+u96t4sv3Hvx/dQx4yo0lx9qHN4jnmJcbIPbKw7Vb63I+HyPqb/AKp6MBekptkHUgkC5x696KW+uTJQloQnkXWk5KUiwsoHoqisvRI//9k='); background-size: cover; display: block;\"\n        >\n          <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"LineDrawingApplication Report8\"\n        title=\"\"\n        src=\"https://images.ctfassets.net/e1rkozd9gki4/5uzNruB0sV0RKyKywV8ze/1f56e9777bcdb0a74608c385ef706142/LineDrawingApplication_Report8.jpg\"\n        srcset=\"https://images.ctfassets.net/e1rkozd9gki4/5uzNruB0sV0RKyKywV8ze/1f56e9777bcdb0a74608c385ef706142/LineDrawingApplication_Report8.jpg?w=37 37w,\nhttps://images.ctfassets.net/e1rkozd9gki4/5uzNruB0sV0RKyKywV8ze/1f56e9777bcdb0a74608c385ef706142/LineDrawingApplication_Report8.jpg?w=73 73w,\nhttps://images.ctfassets.net/e1rkozd9gki4/5uzNruB0sV0RKyKywV8ze/1f56e9777bcdb0a74608c385ef706142/LineDrawingApplication_Report8.jpg?w=146 146w\"\n        sizes=\"(max-width: 146px) 100vw, 146px\"\n        loading=\"lazy\"\n      />\n        </span>\n      </span>\n<span\n        class=\"gatsby-resp-image-wrapper\"\n        style=\"position: relative; display: block; ; max-width: 475px; margin-left: auto; margin-right: auto;\"\n      >\n        <span\n          class=\"gatsby-resp-image-background-image\"\n          style=\"padding-bottom: 38.94736842105263%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAdAB0AAD/2wBDAAwICQsJCAwLCgsODQwOEh4UEhEREiUbHBYeLCcuLisnKyoxN0Y7MTRCNCorPVM+QkhKTk9OLztWXFVMW0ZNTkv/2wBDAQ0ODhIQEiQUFCRLMisyS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0v/wAARCAAQACgDASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAAAAMEAgf/xAAmEAACAQMBCAMBAAAAAAAAAAABAhEAAxIEEyEiMTJRweFBUpHR/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAL/xAAZEQACAwEAAAAAAAAAAAAAAAAAAQIREkH/2gAMAwEAAhEDEQA/AOjqkMqgHEiZk/zzSHu2xcKGZDR1eqrR1wXiHLvSyHykalYnliKq2TSE212k42yQDHX6qhLAxBOQMbxPKtW2CoA90Oe+4VrNPsv7TUhmJDqtILrlrlrJVXc2Xiiq7zrsX4h0n5oolYb4f//Z'); background-size: cover; display: block;\"\n        >\n          <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"LineDrawingApplication Report9\"\n        title=\"\"\n        src=\"https://images.ctfassets.net/e1rkozd9gki4/Bw3kvNkS2LXyI7q7IHl2a/d346409397a4d8457511324f1b8ff974/LineDrawingApplication_Report9.jpg\"\n        srcset=\"https://images.ctfassets.net/e1rkozd9gki4/Bw3kvNkS2LXyI7q7IHl2a/d346409397a4d8457511324f1b8ff974/LineDrawingApplication_Report9.jpg?w=119 119w,\nhttps://images.ctfassets.net/e1rkozd9gki4/Bw3kvNkS2LXyI7q7IHl2a/d346409397a4d8457511324f1b8ff974/LineDrawingApplication_Report9.jpg?w=238 238w,\nhttps://images.ctfassets.net/e1rkozd9gki4/Bw3kvNkS2LXyI7q7IHl2a/d346409397a4d8457511324f1b8ff974/LineDrawingApplication_Report9.jpg?w=475 475w\"\n        sizes=\"(max-width: 475px) 100vw, 475px\"\n        loading=\"lazy\"\n      />\n        </span>\n      </span></p>\n<p>메뉴의 마지막으로 도움말의 정보를 누르게 되면 프로그램에 관한 정보를 볼 수 있다.</p>\n<h3 id=\"3-기본-선의-색은-파랑색\" style=\"position:relative;\"><a href=\"#3-%EA%B8%B0%EB%B3%B8-%EC%84%A0%EC%9D%98-%EC%83%89%EC%9D%80-%ED%8C%8C%EB%9E%91%EC%83%89\" aria-label=\"3 기본 선의 색은 파랑색 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3. 기본 선의 색은 파랑색</h3>\n<p><span\n        class=\"gatsby-resp-image-wrapper\"\n        style=\"position: relative; display: block; ; max-width: 550px; margin-left: auto; margin-right: auto;\"\n      >\n        <span\n          class=\"gatsby-resp-image-background-image\"\n          style=\"padding-bottom: 56.72727272727273%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAXgBeAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAXACgDASIAAhEBAxEB/8QAGgABAAIDAQAAAAAAAAAAAAAAAAEGAgMEB//EADMQAAEDAgEHCQkAAAAAAAAAAAEAAgMEEQUGBxIVIVHREyIjQVNhcaLSFCU0QkNygZGx/8QAFgEBAQEAAAAAAAAAAAAAAAAAAQAC/8QAGhEBAQACAwAAAAAAAAAAAAAAAAEREgIhMf/aAAwDAQACEQMRAD8A9ZZkVhMkLS9shLrOPSO4riqc2GS1W4mronSsvcNdPIA39OVuicG08W8tFgOvYsw0k3d+B1BO1GIo7M0WRVj7lABFttRL61mzNJkZE7SZhOie6pm9au6J2qxFZfkPgTIHaNM/mtNrzyG2zvcisU/w8v2H+Is+tTlZ1K4KbFqAQRnl9pYL8x27wW7W1Cfr+R3BESynWlF23lPBRrah7fyO4IisJqqcXofZpen26B+R27wRETIn/9k='); background-size: cover; display: block;\"\n        >\n          <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"LineDrawingApplication Report10\"\n        title=\"\"\n        src=\"https://images.ctfassets.net/e1rkozd9gki4/1MeLKz4bi16VhPciiOBcnQ/da7c5c7fe11f8115f14e252b18f93c07/LineDrawingApplication_Report10.jpg\"\n        srcset=\"https://images.ctfassets.net/e1rkozd9gki4/1MeLKz4bi16VhPciiOBcnQ/da7c5c7fe11f8115f14e252b18f93c07/LineDrawingApplication_Report10.jpg?w=138 138w,\nhttps://images.ctfassets.net/e1rkozd9gki4/1MeLKz4bi16VhPciiOBcnQ/da7c5c7fe11f8115f14e252b18f93c07/LineDrawingApplication_Report10.jpg?w=275 275w,\nhttps://images.ctfassets.net/e1rkozd9gki4/1MeLKz4bi16VhPciiOBcnQ/da7c5c7fe11f8115f14e252b18f93c07/LineDrawingApplication_Report10.jpg?w=550 550w\"\n        sizes=\"(max-width: 550px) 100vw, 550px\"\n        loading=\"lazy\"\n      />\n        </span>\n      </span></p>\n<p>기본으로 생성되는 선은 색은 파랑색이다. 아래 currentColor 변수를 전역 변\n수로 사용하여 현재 사용되는 선의 색을 저장한다.</p>\n<div class=\"gatsby-highlight\" data-language=\"cpp\"><pre class=\"language-cpp\"><code class=\"language-cpp\"><span class=\"token comment\">// 현재 사용되고 있는 컬러 (현재 파란색으로 처음 시작)</span>\nCOLORREF currentColor <span class=\"token operator\">=</span> <span class=\"token number\">0xff0000</span><span class=\"token punctuation\">;</span></code></pre></div>\n<h3 id=\"4-선은-10개까지만-그릴-수-있다\" style=\"position:relative;\"><a href=\"#4-%EC%84%A0%EC%9D%80-10%EA%B0%9C%EA%B9%8C%EC%A7%80%EB%A7%8C-%EA%B7%B8%EB%A6%B4-%EC%88%98-%EC%9E%88%EB%8B%A4\" aria-label=\"4 선은 10개까지만 그릴 수 있다 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4. 선은 10개까지만 그릴 수 있다.</h3>\n<p><span\n        class=\"gatsby-resp-image-wrapper\"\n        style=\"position: relative; display: block; ; max-width: 650px; margin-left: auto; margin-right: auto;\"\n      >\n        <span\n          class=\"gatsby-resp-image-background-image\"\n          style=\"padding-bottom: 39.33823529411765%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAiwCLAAD/2wBDAA8LDA0MCg8NDA0REA8SFyYZFxUVFy8iJBwmODE7OjcxNjU9RVhLPUFUQjU2TWlOVFteY2RjPEpsdGxgc1hhY1//2wBDARARERcUFy0ZGS1fPzY/X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX1//wAARCAAQACgDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAAAAQCAwUG/8QAKxAAAQMCAwUJAQAAAAAAAAAAAQIDEQAFEhUhBBMxYpIUIiMzQVFS0eHx/8QAFQEBAQAAAAAAAAAAAAAAAAAAAQD/xAAVEQEBAAAAAAAAAAAAAAAAAAAAEf/aAAwDAQACEQMRAD8A7LKbepIxbK2ZHrUchtMT2BjXlp5DreFPiI4fKpF1uPMR1VJnZFadZt7HRVOS2kicr2fX3itbetwRvEa81UBxwJAxMaDjvPykQkm1W0YkC3NIGEkEQQY/tFOBSu8p11qAhQASqeMfVFBf/9k='); background-size: cover; display: block;\"\n        >\n          <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"LineDrawingApplication Report11\"\n        title=\"\"\n        src=\"https://images.ctfassets.net/e1rkozd9gki4/2UxbrxjxX7aB28o7v4VhvT/47559f1fc8d5c5915e8081783bfa584b/LineDrawingApplication_Report11.jpg\"\n        srcset=\"https://images.ctfassets.net/e1rkozd9gki4/2UxbrxjxX7aB28o7v4VhvT/47559f1fc8d5c5915e8081783bfa584b/LineDrawingApplication_Report11.jpg?w=204 204w,\nhttps://images.ctfassets.net/e1rkozd9gki4/2UxbrxjxX7aB28o7v4VhvT/47559f1fc8d5c5915e8081783bfa584b/LineDrawingApplication_Report11.jpg?w=408 408w,\nhttps://images.ctfassets.net/e1rkozd9gki4/2UxbrxjxX7aB28o7v4VhvT/47559f1fc8d5c5915e8081783bfa584b/LineDrawingApplication_Report11.jpg?w=816 816w\"\n        sizes=\"(max-width: 650px) 100vw, 650px\"\n        loading=\"lazy\"\n      />\n        </span>\n      </span></p>\n<div class=\"gatsby-highlight\" data-language=\"cpp\"><pre class=\"language-cpp\"><code class=\"language-cpp\">LRESULT CALLBACK <span class=\"token function\">WndProc</span><span class=\"token punctuation\">(</span>HWND hWnd<span class=\"token punctuation\">,</span> UINT message<span class=\"token punctuation\">,</span> WPARAM wParam<span class=\"token punctuation\">,</span>\n    LPARAM lParam<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">switch</span> <span class=\"token punctuation\">(</span>message<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">case</span> WM_LBUTTONDOWN<span class=\"token operator\">:</span>\n      <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>lines<span class=\"token punctuation\">.</span><span class=\"token function\">size</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">>=</span> <span class=\"token number\">10</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span><span class=\"token operator\">::</span><span class=\"token function\">MessageBox</span><span class=\"token punctuation\">(</span>hWnd<span class=\"token punctuation\">,</span> <span class=\"token function\">_T</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"직선을 더이상 입력할 수 없습니다!\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token function\">_T</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"ERROR\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n            MB_OK<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n          currentLine<span class=\"token punctuation\">.</span>p0<span class=\"token punctuation\">.</span>x <span class=\"token operator\">=</span> currentLine<span class=\"token punctuation\">.</span>p1<span class=\"token punctuation\">.</span>x <span class=\"token operator\">=</span> <span class=\"token function\">LOWORD</span><span class=\"token punctuation\">(</span>lParam<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n          currentLine<span class=\"token punctuation\">.</span>p0<span class=\"token punctuation\">.</span>y <span class=\"token operator\">=</span> currentLine<span class=\"token punctuation\">.</span>p1<span class=\"token punctuation\">.</span>y <span class=\"token operator\">=</span> <span class=\"token function\">HIWORD</span><span class=\"token punctuation\">(</span>lParam<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n          currentLine<span class=\"token punctuation\">.</span>color <span class=\"token operator\">=</span> currentColor<span class=\"token punctuation\">;</span>\n          inputting <span class=\"token operator\">=</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n      <span class=\"token punctuation\">}</span>\n      <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n      <span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span></code></pre></div>\n<p>선은 최대 10개까지만 그릴 수 있다. 사용자가 왼쪽 마우스 클릭하였을 때 (WM_LBUTTONDOWN), Vectoer lines의 크기를 체크해서 10개 이상이 되었으면 오류의 창을 알려준다. 그렇지 않을 경우에는 선분의 p0, p1의 x값에 현재 마우스 클릭한 좌표의 x를 넣어주고, 선분의 po, p2의 y값에는 현재 마우스 클릭한 좌표의 y를 넣어준다. 그리고 inputting를 true로 변경하여 마우스의 움직임을 통하여 선분을 그을 수 있도록 지정해준다. 사용자가 마우스를 땔 경우에 선분의 모든 좌표가 올바르게 적용된다.</p>\n<h3 id=\"5-디버그-출력창을-통해-선들과의-거리-체크\" style=\"position:relative;\"><a href=\"#5-%EB%94%94%EB%B2%84%EA%B7%B8-%EC%B6%9C%EB%A0%A5%EC%B0%BD%EC%9D%84-%ED%86%B5%ED%95%B4-%EC%84%A0%EB%93%A4%EA%B3%BC%EC%9D%98-%EA%B1%B0%EB%A6%AC-%EC%B2%B4%ED%81%AC\" aria-label=\"5 디버그 출력창을 통해 선들과의 거리 체크 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>5. 디버그 출력창을 통해 선들과의 거리 체크</h3>\n<p><span\n        class=\"gatsby-resp-image-wrapper\"\n        style=\"position: relative; display: block; ; max-width: 523px; margin-left: auto; margin-right: auto;\"\n      >\n        <span\n          class=\"gatsby-resp-image-background-image\"\n          style=\"padding-bottom: 69.02485659655832%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAbQBtAAD/2wBDAAsHCAoIBwsKCQoMDAsNEBsSEA8PECEYGRQbJyMpKScjJiUsMT81LC47LyUmNko3O0FDRkdGKjRNUkxEUj9FRkP/2wBDAQwMDBAOECASEiBDLSYtQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0P/wAARCAAcACgDASIAAhEBAxEB/8QAGwAAAgIDAQAAAAAAAAAAAAAAAAMBAgQFBgf/xAAwEAACAQIEAQgLAAAAAAAAAAABAgADEQQGEiEFEzJBUWFxkbEWMTM0UmJyocHR4f/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/8QAFhEBAQEAAAAAAAAAAAAAAAAAAAER/9oADAMBAAIRAxEAPwD0QZcwToNesk7klpiVsn8JxLsr4blUHrVnOm/VN4rFlVEO+kam6v7HKoVQqiwEuo5f0Fy4OfwxE72a3jeOp5Fy+hDU8Ag7Q7fudHFmkt7rdT8sbVyNS+WOGLSa2HFwptdifzCbKozclVUkNZDva3RCRdsFJKlOmClmUi+k7HxjFrKTpa6N1NtJpezTuEsyhhZgCO2ETKOxvpXnH7RZXknQIzaWNtJNxGUxYE9JO5gVqqFw1QD4T5Qk4j3ep9B8oQP/2Q=='); background-size: cover; display: block;\"\n        >\n          <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"LineDrawingApplication Report12\"\n        title=\"\"\n        src=\"https://images.ctfassets.net/e1rkozd9gki4/3chiqWmQMvh6RUT2HUhRMH/9149e8443ac269b53c18c729810287ab/LineDrawingApplication_Report12.jpg\"\n        srcset=\"https://images.ctfassets.net/e1rkozd9gki4/3chiqWmQMvh6RUT2HUhRMH/9149e8443ac269b53c18c729810287ab/LineDrawingApplication_Report12.jpg?w=131 131w,\nhttps://images.ctfassets.net/e1rkozd9gki4/3chiqWmQMvh6RUT2HUhRMH/9149e8443ac269b53c18c729810287ab/LineDrawingApplication_Report12.jpg?w=262 262w,\nhttps://images.ctfassets.net/e1rkozd9gki4/3chiqWmQMvh6RUT2HUhRMH/9149e8443ac269b53c18c729810287ab/LineDrawingApplication_Report12.jpg?w=523 523w\"\n        sizes=\"(max-width: 523px) 100vw, 523px\"\n        loading=\"lazy\"\n      />\n        </span>\n      </span>\n<span\n        class=\"gatsby-resp-image-wrapper\"\n        style=\"position: relative; display: block; ; max-width: 415px; margin-left: auto; margin-right: auto;\"\n      >\n        <span\n          class=\"gatsby-resp-image-background-image\"\n          style=\"padding-bottom: 95.18072289156626%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAaABpAAD/2wBDAAoHBwkHBgoJCAkLCwoMDxkQDw4ODx4WFxIZJCAmJSMgIyIoLTkwKCo2KyIjMkQyNjs9QEBAJjBGS0U+Sjk/QD3/2wBDAQsLCw8NDx0QEB09KSMpPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT3/wAARCAAmACgDASIAAhEBAxEB/8QAGgABAQADAQEAAAAAAAAAAAAAAAIBAwQFBv/EAC8QAAEDAgMFBQkAAAAAAAAAAAEAAhEDIQQSMQUTImHRMkFRkfAVI1JxgcHS4fH/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAwH/xAAaEQACAwEBAAAAAAAAAAAAAAAAAQNSkRMU/9oADAMBAAIRAxEAPwD5F20MXUDHkky2b1Beyk43FhjjBnUe8EieX0K00o3VPsTl8D4BUC0OkbsRB7J1Enp6lV7yWekuEVViDsdjWtzZiRycDzU+0cbMRVn5fpYpEClbJeAJBnVU1zcrBwWBN293VO8tno88VViJftPGU4zmo2dJEfZFr2gSxzWNc0tLRZo087oneWz0eeKqxHRQa51GnGeLNtzAVUxUrGRn0A8p/IKaGXcssw8TdSfhCYcNLHA7vLcGSfXipFTnbimMa9uapcEW7+l1QxlMFvFUtzXAdTCIC6z89QumZi8QihFoPRZimMotbL8wg9kRIA6LAxzaBcKed3EYmBY/wIiwHnm5PciItAREQH//2Q=='); background-size: cover; display: block;\"\n        >\n          <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"LineDrawingApplication Report13\"\n        title=\"\"\n        src=\"https://images.ctfassets.net/e1rkozd9gki4/29uBYCm8dxUwWhjWma1H0D/43daa3d224be8fc3a466a8100b10c9a7/LineDrawingApplication_Report13.jpg\"\n        srcset=\"https://images.ctfassets.net/e1rkozd9gki4/29uBYCm8dxUwWhjWma1H0D/43daa3d224be8fc3a466a8100b10c9a7/LineDrawingApplication_Report13.jpg?w=104 104w,\nhttps://images.ctfassets.net/e1rkozd9gki4/29uBYCm8dxUwWhjWma1H0D/43daa3d224be8fc3a466a8100b10c9a7/LineDrawingApplication_Report13.jpg?w=208 208w,\nhttps://images.ctfassets.net/e1rkozd9gki4/29uBYCm8dxUwWhjWma1H0D/43daa3d224be8fc3a466a8100b10c9a7/LineDrawingApplication_Report13.jpg?w=415 415w\"\n        sizes=\"(max-width: 415px) 100vw, 415px\"\n        loading=\"lazy\"\n      />\n        </span>\n      </span></p>\n<p>오른쪽 마우스를 클릭할 경우, 현재 마우스 버튼의 좌표를 확인할 수 있다고 위에서 설명했다. 만일 선분이 있을 경우에는 선분들의 위치와 색상, 현재 위치와 선분들과의 거리를 모두 확인할 수 있다. 선분과의 거리는 ‘distance‘라는 함수를 통해 구현하였다.</p>\n<p>오른쪽 마우스가 다운되었을 때 실행되는 소스이다. 오른쪽 마우스 클릭한 좌표와 선들과의 차이를 저장하는 배열 ‘distanceResult’, 현재 위치를 저장하는 지역 변수 ‘currentX’, ‘currentY’, 선분과의 거리와 우선순위를 통해 선을 선택하는 전역 변수 ‘lineSelect’, 현재 좌표와 선분들의 거리를 체크해주는 함수 ‘distance’ 호출 등이 주로 이용된다.</p>\n<div class=\"gatsby-highlight\" data-language=\"cpp\"><pre class=\"language-cpp\"><code class=\"language-cpp\"><span class=\"token comment\">// 오른쪽 마우스가 다운되었을 때(DOWN)</span>\n<span class=\"token keyword\">case</span> WM_RBUTTONDOWN<span class=\"token operator\">:</span>\n  <span class=\"token punctuation\">{</span>\n    <span class=\"token keyword\">float</span> distanceResult<span class=\"token punctuation\">[</span><span class=\"token number\">10</span><span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token number\">0.0</span>\n    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// 오른쪽 마우스 클릭한 좌표와 선들과의 거리차 저장하는 배열</span>\n    lineSelect <span class=\"token operator\">=</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// 선택한 라인 넘버 초기화</span>\n    <span class=\"token keyword\">double</span> currentX <span class=\"token operator\">=</span> <span class=\"token function\">LOWORD</span><span class=\"token punctuation\">(</span>lParam<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// 현재 마우스 클릭한위치의 X를 currentX 변수에 저장</span>\n    <span class=\"token keyword\">double</span> currentY <span class=\"token operator\">=</span> <span class=\"token function\">HIWORD</span><span class=\"token punctuation\">(</span>lParam<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// 현재 마우스 클릭한 위치의 Y를 currentY 변수에 저장</span>\n    <span class=\"token comment\">// 오른쪽 마우스 클릭 좌표 표시</span>\n    <span class=\"token function\">TRACE</span><span class=\"token punctuation\">(</span><span class=\"token function\">_T</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"\\n오른쪽 마우스 버튼 좌표 = (%d, %d)\\n\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n      <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span><span class=\"token punctuation\">)</span> currentX<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span><span class=\"token punctuation\">)</span> currentY<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token comment\">// 라인이 하나도 없을 경우 break문을 통해 탈출</span>\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span><span class=\"token punctuation\">)</span> lines<span class=\"token punctuation\">.</span><span class=\"token function\">size</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">&lt;=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token comment\">// 라인이 하나라도 있을 경우 드래그가 가능하도록 아래 else로 들어감</span>\n    <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n      <span class=\"token comment\">// 현재 Vector Lines에 있는 모든 p0, p1의 x, y 좌표 표시</span>\n      <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> i <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> i <span class=\"token operator\">&lt;</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span><span class=\"token punctuation\">)</span> lines<span class=\"token punctuation\">.</span><span class=\"token function\">size</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> i<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token function\">TRACE</span><span class=\"token punctuation\">(</span><span class=\"token function\">_T</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"[line %d] p0.x=%d, p0.y=%d , \"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> i <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span>\n          lines<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>p0<span class=\"token punctuation\">.</span>x<span class=\"token punctuation\">,</span> lines<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>p0<span class=\"token punctuation\">.</span>y<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n        <span class=\"token function\">TRACE</span><span class=\"token punctuation\">(</span><span class=\"token function\">_T</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"p1.x=%d, p1.y=%d, color=%d \\n\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n          lines<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>p1<span class=\"token punctuation\">.</span>x<span class=\"token punctuation\">,</span> lines<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>p1<span class=\"token punctuation\">.</span>y<span class=\"token punctuation\">,</span> lines<span class=\"token punctuation\">[</span>i<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>color<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token punctuation\">}</span>\n\n      <span class=\"token comment\">// 오른쪽 마우스 클릭 좌표와 라인과의 거리 차이를 distance 함수를 이용해 배열 distanceResult에 저장</span>\n      <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> j <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> j <span class=\"token operator\">&lt;</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span><span class=\"token punctuation\">)</span> lines<span class=\"token punctuation\">.</span><span class=\"token function\">size</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> j<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        distanceResult<span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span> <span class=\"token operator\">=</span> <span class=\"token function\">distance</span><span class=\"token punctuation\">(</span>lines<span class=\"token punctuation\">[</span>j<span class=\"token punctuation\">]</span><span class=\"token punctuation\">,</span> currentX<span class=\"token punctuation\">,</span>\n          currentY<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token punctuation\">}</span>\n      <span class=\"token comment\">// distanceResult 배열 값들의 출력을 통해 모든 선들의 최소 거리 체크</span>\n      <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> k <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> k <span class=\"token operator\">&lt;</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span><span class=\"token punctuation\">)</span> lines<span class=\"token punctuation\">.</span><span class=\"token function\">size</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> k<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token function\">TRACE</span><span class=\"token punctuation\">(</span><span class=\"token function\">_T</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"선 %d과의 거리 = %f \\n\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> k <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">,</span>\n          distanceResult<span class=\"token punctuation\">[</span>k<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token punctuation\">}</span>\n      <span class=\"token comment\">// distanceResult 배열 값들 중에 거리 차이가 1이하인 선들을 파악</span>\n      <span class=\"token comment\">// 거리 차이가 1 이하인 선들 중에 가장 나중에 만들어진 선을 선택</span>\n      <span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> l <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> l <span class=\"token operator\">&lt;</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span><span class=\"token punctuation\">)</span> lines<span class=\"token punctuation\">.</span><span class=\"token function\">size</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> l<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>distanceResult<span class=\"token punctuation\">[</span>l<span class=\"token punctuation\">]</span> <span class=\"token operator\">>=</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span> <span class=\"token operator\">&amp;&amp;</span> distanceResult<span class=\"token punctuation\">[</span>l<span class=\"token punctuation\">]</span> <span class=\"token operator\">&lt;=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n          lineSelect <span class=\"token operator\">=</span> l<span class=\"token punctuation\">;</span>\n        <span class=\"token punctuation\">}</span>\n      <span class=\"token punctuation\">}</span>\n      <span class=\"token comment\">// line이 하나라도 선택이 됬을 경우 bool형 lineMoving 변수를 true로 변경하여 드래그 가능하도록 변경</span>\n      <span class=\"token comment\">// lineMoving 변수는 WM_MOUSEMOVE에서 사용</span>\n      <span class=\"token comment\">// TRACE 함수를 통해 마우스 오른쪽 버튼으로 선택된 선의 번호를 알림</span>\n      <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>lineSelect <span class=\"token operator\">>=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        lineMoving <span class=\"token operator\">=</span> <span class=\"token boolean\">true</span><span class=\"token punctuation\">;</span>\n        <span class=\"token function\">TRACE</span><span class=\"token punctuation\">(</span><span class=\"token function\">_T</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"선택된 라인 넘버-> %d!\\n\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> lineSelect <span class=\"token operator\">+</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n      <span class=\"token punctuation\">}</span>\n      <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n  <span class=\"token punctuation\">}</span></code></pre></div>\n<p>‘distance’ 함수는 오른쪽 마우스 클릭하게 될 때, 선분이 존재해있으면 현재 좌표와 선분들과의 거리를 구해준다. return은 double 실수형으로 출력해주기 때문에 다양한 곳에서 받아서 사용할 수 있다. ‘distance’ 함수 이외에도\n두 구조체의 변수들(x, y)를 통해 거리 계산하는 함수 ‘GetDistance‘, 오른쪽 마우스 클릭했을 때 어디 위치를 기준으로 드래그할 것인지를 분별하는 ’GetDistance2‘, 두 실수형의 크기를 비교하여 작은 값을 출력하는 ’GetMin‘, 두 실수형의 크기를 비교하여 큰 값을 출력하는 ’GetMax‘ 함수 등 거리에 관련된 함수는 총 5개이다.</p>\n<div class=\"gatsby-highlight\" data-language=\"cpp\"><pre class=\"language-cpp\"><code class=\"language-cpp\"><span class=\"token comment\">// 오른쪽 마우스 클릭과 이미 그려진 선들과의 거리를 구하는 함수</span>\n<span class=\"token keyword\">double</span> <span class=\"token function\">distance</span><span class=\"token punctuation\">(</span>Line lines<span class=\"token punctuation\">,</span> <span class=\"token keyword\">double</span> currentX<span class=\"token punctuation\">,</span> <span class=\"token keyword\">double</span> currentY<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  POINT2 p<span class=\"token punctuation\">;</span> <span class=\"token comment\">// 클릭한 오른쪽 마우스 좌표를 저장할 구조체 선언</span>\n  LINE2 l<span class=\"token punctuation\">;</span> <span class=\"token comment\">// 이미 그려져 있는 라인(lines[.])을 잇는 선분</span>\n  POINT2 a<span class=\"token punctuation\">;</span> <span class=\"token comment\">// p와 p1,p2를 지나는 직선과의 교점</span>\n  <span class=\"token keyword\">double</span> m1<span class=\"token punctuation\">;</span> <span class=\"token comment\">// 새롭게 생성될 l의 기울기</span>\n  <span class=\"token keyword\">double</span> k1<span class=\"token punctuation\">;</span> <span class=\"token comment\">// l의 방정식 y=mx+k1의 상수 k1</span>\n  <span class=\"token keyword\">double</span> m2<span class=\"token punctuation\">;</span> <span class=\"token comment\">// l과 수직인 직선의 기울기</span>\n  <span class=\"token keyword\">double</span> k2<span class=\"token punctuation\">;</span> <span class=\"token comment\">// l과 수직인 직선의 방정식 y=mx+k2의 상수 k2</span>\n  <span class=\"token comment\">// 클릭한 오른쪽 마우스 좌표의 x,y를 구조체 p에 대입</span>\n  p<span class=\"token punctuation\">.</span>x <span class=\"token operator\">=</span> currentX<span class=\"token punctuation\">;</span>\n  p<span class=\"token punctuation\">.</span>y <span class=\"token operator\">=</span> currentY<span class=\"token punctuation\">;</span>\n  <span class=\"token comment\">// line 구조체를 통해 p1, p2 구조체를 접근하여 기존에 존재한 라인들의 좌표를 대</span>\n  입\n  l<span class=\"token punctuation\">.</span>p1<span class=\"token punctuation\">.</span>x <span class=\"token operator\">=</span> lines<span class=\"token punctuation\">.</span>p0<span class=\"token punctuation\">.</span>x<span class=\"token punctuation\">;</span>\n  l<span class=\"token punctuation\">.</span>p1<span class=\"token punctuation\">.</span>y <span class=\"token operator\">=</span> lines<span class=\"token punctuation\">.</span>p0<span class=\"token punctuation\">.</span>y<span class=\"token punctuation\">;</span>\n  l<span class=\"token punctuation\">.</span>p2<span class=\"token punctuation\">.</span>x <span class=\"token operator\">=</span> lines<span class=\"token punctuation\">.</span>p1<span class=\"token punctuation\">.</span>x<span class=\"token punctuation\">;</span>\n  l<span class=\"token punctuation\">.</span>p2<span class=\"token punctuation\">.</span>y <span class=\"token operator\">=</span> lines<span class=\"token punctuation\">.</span>p1<span class=\"token punctuation\">.</span>y<span class=\"token punctuation\">;</span>\n\n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>l<span class=\"token punctuation\">.</span>p1<span class=\"token punctuation\">.</span>x <span class=\"token operator\">==</span> l<span class=\"token punctuation\">.</span>p2<span class=\"token punctuation\">.</span>x<span class=\"token punctuation\">)</span> <span class=\"token comment\">// 선분이 수직일 경우</span>\n  <span class=\"token punctuation\">{</span>\n    a<span class=\"token punctuation\">.</span>x <span class=\"token operator\">=</span> l<span class=\"token punctuation\">.</span>p1<span class=\"token punctuation\">.</span>x<span class=\"token punctuation\">;</span>\n    a<span class=\"token punctuation\">.</span>y <span class=\"token operator\">=</span> p<span class=\"token punctuation\">.</span>y<span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>l<span class=\"token punctuation\">.</span>p1<span class=\"token punctuation\">.</span>y <span class=\"token operator\">==</span> l<span class=\"token punctuation\">.</span>p2<span class=\"token punctuation\">.</span>y<span class=\"token punctuation\">)</span> <span class=\"token comment\">// 선분이 수평일 경우</span>\n  <span class=\"token punctuation\">{</span>\n    a<span class=\"token punctuation\">.</span>x <span class=\"token operator\">=</span> p<span class=\"token punctuation\">.</span>x<span class=\"token punctuation\">;</span>\n    a<span class=\"token punctuation\">.</span>y <span class=\"token operator\">=</span> l<span class=\"token punctuation\">.</span>p1<span class=\"token punctuation\">.</span>y<span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span> <span class=\"token comment\">// 그 외의 경우</span>\n    <span class=\"token comment\">// 기울기 m1</span>\n    m1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>l<span class=\"token punctuation\">.</span>p1<span class=\"token punctuation\">.</span>y <span class=\"token operator\">-</span> l<span class=\"token punctuation\">.</span>p2<span class=\"token punctuation\">.</span>y<span class=\"token punctuation\">)</span> <span class=\"token operator\">/</span> <span class=\"token punctuation\">(</span>l<span class=\"token punctuation\">.</span>p1<span class=\"token punctuation\">.</span>x <span class=\"token operator\">-</span> l<span class=\"token punctuation\">.</span>p2<span class=\"token punctuation\">.</span>x<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token comment\">// 상수 k1</span>\n    k1 <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token operator\">-</span><span class=\"token number\">1</span> <span class=\"token operator\">*</span> m1<span class=\"token punctuation\">)</span> <span class=\"token operator\">*</span> l<span class=\"token punctuation\">.</span>p1<span class=\"token punctuation\">.</span>x<span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> l<span class=\"token punctuation\">.</span>p1<span class=\"token punctuation\">.</span>y<span class=\"token punctuation\">;</span>\n    <span class=\"token comment\">// 이제 선분 l 을 포함하는 직선의 방정식은 y = m1x + k1를 구함</span>\n    <span class=\"token comment\">// 두 직선은 직교하기 때문에 m1 * m2 = -1</span>\n    <span class=\"token comment\">// 기울기 m2</span>\n    m2 <span class=\"token operator\">=</span> <span class=\"token operator\">-</span><span class=\"token number\">1.0</span> <span class=\"token operator\">/</span> m1<span class=\"token punctuation\">;</span>\n    <span class=\"token comment\">// p 를 지나기 때문에 yp = m2 * xp + k2 => k2 = yp - m2 * xp</span>\n    k2 <span class=\"token operator\">=</span> p<span class=\"token punctuation\">.</span>y <span class=\"token operator\">-</span> m2 <span class=\"token operator\">*</span> p<span class=\"token punctuation\">.</span>x<span class=\"token punctuation\">;</span>\n    <span class=\"token comment\">// 두 직선 y = m1x + k1, y = m2x + k2 의 교점을 구함</span>\n    a<span class=\"token punctuation\">.</span>x <span class=\"token operator\">=</span> <span class=\"token punctuation\">(</span>k2 <span class=\"token operator\">-</span> k1<span class=\"token punctuation\">)</span> <span class=\"token operator\">/</span> <span class=\"token punctuation\">(</span>m1 <span class=\"token operator\">-</span> m2<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    a<span class=\"token punctuation\">.</span>y <span class=\"token operator\">=</span> m1 <span class=\"token operator\">*</span> a<span class=\"token punctuation\">.</span>x <span class=\"token operator\">+</span> k1<span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token comment\">// 구한 점이 선분 위에 있는 지 확인</span>\n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>a<span class=\"token punctuation\">.</span>x <span class=\"token operator\">>=</span> <span class=\"token function\">GetMin</span><span class=\"token punctuation\">(</span>l<span class=\"token punctuation\">.</span>p1<span class=\"token punctuation\">.</span>x<span class=\"token punctuation\">,</span> l<span class=\"token punctuation\">.</span>p2<span class=\"token punctuation\">.</span>x<span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;&amp;</span> a<span class=\"token punctuation\">.</span>x <span class=\"token operator\">&lt;=</span> <span class=\"token function\">GetMax</span><span class=\"token punctuation\">(</span>l<span class=\"token punctuation\">.</span>p1<span class=\"token punctuation\">.</span>x<span class=\"token punctuation\">,</span> l<span class=\"token punctuation\">.</span>p2<span class=\"token punctuation\">.</span>x<span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;&amp;</span>\n    a<span class=\"token punctuation\">.</span>y <span class=\"token operator\">>=</span> <span class=\"token function\">GetMin</span><span class=\"token punctuation\">(</span>l<span class=\"token punctuation\">.</span>p1<span class=\"token punctuation\">.</span>y<span class=\"token punctuation\">,</span> l<span class=\"token punctuation\">.</span>p2<span class=\"token punctuation\">.</span>y<span class=\"token punctuation\">)</span> <span class=\"token operator\">&amp;&amp;</span> a<span class=\"token punctuation\">.</span>y <span class=\"token operator\">&lt;=</span> <span class=\"token function\">GetMax</span><span class=\"token punctuation\">(</span>l<span class=\"token punctuation\">.</span>p1<span class=\"token punctuation\">.</span>y<span class=\"token punctuation\">,</span> l<span class=\"token punctuation\">.</span>p2<span class=\"token punctuation\">.</span>y<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token comment\">// 구한 교점이 선분위에 있으면 p 와 a 와의 거리가 최소 거리</span>\n    <span class=\"token keyword\">return</span> <span class=\"token function\">GetDistance</span><span class=\"token punctuation\">(</span>p<span class=\"token punctuation\">,</span> a<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token comment\">// 구한 교점이 선분 위에 없으면 p~p1 또는 p~p2 중 작은 값이 최소 거리</span>\n    <span class=\"token keyword\">return</span> <span class=\"token function\">GetMin</span><span class=\"token punctuation\">(</span><span class=\"token function\">GetDistance</span><span class=\"token punctuation\">(</span>p<span class=\"token punctuation\">,</span> l<span class=\"token punctuation\">.</span>p1<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token function\">GetDistance</span><span class=\"token punctuation\">(</span>p<span class=\"token punctuation\">,</span> l<span class=\"token punctuation\">.</span>p2<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token comment\">// 두 구조체의 변수들(x,y)를 통해 거리 계산하는 함수</span>\n<span class=\"token keyword\">double</span> <span class=\"token function\">GetDistance</span><span class=\"token punctuation\">(</span>POINT2 a<span class=\"token punctuation\">,</span> POINT2 b<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">return</span> <span class=\"token function\">sqrt</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>b<span class=\"token punctuation\">.</span>x <span class=\"token operator\">-</span> a<span class=\"token punctuation\">.</span>x<span class=\"token punctuation\">)</span> <span class=\"token operator\">*</span> <span class=\"token punctuation\">(</span>b<span class=\"token punctuation\">.</span>x <span class=\"token operator\">-</span> a<span class=\"token punctuation\">.</span>x<span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token punctuation\">(</span>b<span class=\"token punctuation\">.</span>y <span class=\"token operator\">-</span> a<span class=\"token punctuation\">.</span>y<span class=\"token punctuation\">)</span> <span class=\"token operator\">*</span> <span class=\"token punctuation\">(</span>b<span class=\"token punctuation\">.</span>y <span class=\"token operator\">-</span> a<span class=\"token punctuation\">.</span>y<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n<span class=\"token comment\">// 오른쪽 마우스 클릭했을 때 어디 위치를 기준으로 드래그 할것인지를 분별하는 함수</span>\n<span class=\"token keyword\">double</span> <span class=\"token function\">GetDistance2</span><span class=\"token punctuation\">(</span>POINT a<span class=\"token punctuation\">,</span> <span class=\"token keyword\">int</span> bx<span class=\"token punctuation\">,</span> <span class=\"token keyword\">int</span> by<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">return</span> <span class=\"token function\">sqrt</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span>bx <span class=\"token operator\">-</span> a<span class=\"token punctuation\">.</span>x<span class=\"token punctuation\">)</span> <span class=\"token operator\">*</span> <span class=\"token punctuation\">(</span>bx <span class=\"token operator\">-</span> a<span class=\"token punctuation\">.</span>x<span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token punctuation\">(</span>by <span class=\"token operator\">-</span> a<span class=\"token punctuation\">.</span>y<span class=\"token punctuation\">)</span> <span class=\"token operator\">*</span> <span class=\"token punctuation\">(</span>by <span class=\"token operator\">-</span> a<span class=\"token punctuation\">.</span>y<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n<span class=\"token comment\">// 두 실수형의 크기를 비교하여 작은 값을 출력</span>\n<span class=\"token keyword\">double</span> <span class=\"token function\">GetMin</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">double</span> d1<span class=\"token punctuation\">,</span> <span class=\"token keyword\">double</span> d2<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>d1 <span class=\"token operator\">&lt;</span> d2<span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">return</span> d1<span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">return</span> d2<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n<span class=\"token comment\">// 두 실수형의 크기를 비교하여 큰 값을 출력</span>\n<span class=\"token keyword\">double</span> <span class=\"token function\">GetMax</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">double</span> d1<span class=\"token punctuation\">,</span> <span class=\"token keyword\">double</span> d2<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>d1 <span class=\"token operator\">></span> d2<span class=\"token punctuation\">)</span>\n    <span class=\"token keyword\">return</span> d1<span class=\"token punctuation\">;</span>\n  <span class=\"token keyword\">return</span> d2<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h3 id=\"6-선의-드래그\" style=\"position:relative;\"><a href=\"#6-%EC%84%A0%EC%9D%98-%EB%93%9C%EB%9E%98%EA%B7%B8\" aria-label=\"6 선의 드래그 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>6. 선의 드래그</h3>\n<p><span\n        class=\"gatsby-resp-image-wrapper\"\n        style=\"position: relative; display: block; ; max-width: 650px; margin-left: auto; margin-right: auto;\"\n      >\n        <span\n          class=\"gatsby-resp-image-background-image\"\n          style=\"padding-bottom: 34.99267935578331%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,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'); background-size: cover; display: block;\"\n        >\n          <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"Screen Shot 2019-03-10 at 10.20.07 PM\"\n        title=\"\"\n        src=\"https://images.ctfassets.net/e1rkozd9gki4/2H4NhSYNEKBHlcVRsIjUIp/111ccb4c60b90ab26e35d595d5dde2dc/Screen_Shot_2019-03-10_at_10.20.07_PM.png\"\n        srcset=\"https://images.ctfassets.net/e1rkozd9gki4/2H4NhSYNEKBHlcVRsIjUIp/111ccb4c60b90ab26e35d595d5dde2dc/Screen_Shot_2019-03-10_at_10.20.07_PM.png?w=342 342w,\nhttps://images.ctfassets.net/e1rkozd9gki4/2H4NhSYNEKBHlcVRsIjUIp/111ccb4c60b90ab26e35d595d5dde2dc/Screen_Shot_2019-03-10_at_10.20.07_PM.png?w=683 683w,\nhttps://images.ctfassets.net/e1rkozd9gki4/2H4NhSYNEKBHlcVRsIjUIp/111ccb4c60b90ab26e35d595d5dde2dc/Screen_Shot_2019-03-10_at_10.20.07_PM.png?w=1366 1366w\"\n        sizes=\"(max-width: 650px) 100vw, 650px\"\n        loading=\"lazy\"\n      />\n        </span>\n      </span>\n<span\n        class=\"gatsby-resp-image-wrapper\"\n        style=\"position: relative; display: block; ; max-width: 413px; margin-left: auto; margin-right: auto;\"\n      >\n        <span\n          class=\"gatsby-resp-image-background-image\"\n          style=\"padding-bottom: 31.719128329297824%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEATABMAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAANACgDASIAAhEBAxEB/8QAGQAAAwADAAAAAAAAAAAAAAAAAAIFAQQG/8QAKhAAAgEDAgQEBwAAAAAAAAAAAQIDABEhBDEFElGSFBVB0SIjM1JTYbH/xAAVAQEBAAAAAAAAAAAAAAAAAAAABP/EABoRAAEFAQAAAAAAAAAAAAAAAAEAAxRSkQT/2gAMAwEAAhEDEQA/AOGfi+rkKyESWK831I8jtxSHiurERazZsQedDYHAxbrU9eIBIkURNdRuX9bAbW2xtQ/EpLMIgy3wCzcxG/rYdaolP3OlTxGKDAto8Y1ygkvgb4Wk891f5D2r7VOE8yiwlcD9Met/7WfEz4+dJgWHxHApKfudKROegwKh55q/vPavtRU555pE5HldlvezMSL0UlP3OlInPQYF/9k='); background-size: cover; display: block;\"\n        >\n          <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"LineDrawingApplication Report14\"\n        title=\"\"\n        src=\"https://images.ctfassets.net/e1rkozd9gki4/kq2qySvSvTLYY7sji9H5Y/d7c4708a7e82fb39541cba9566675b26/LineDrawingApplication_Report14.jpg\"\n        srcset=\"https://images.ctfassets.net/e1rkozd9gki4/kq2qySvSvTLYY7sji9H5Y/d7c4708a7e82fb39541cba9566675b26/LineDrawingApplication_Report14.jpg?w=103 103w,\nhttps://images.ctfassets.net/e1rkozd9gki4/kq2qySvSvTLYY7sji9H5Y/d7c4708a7e82fb39541cba9566675b26/LineDrawingApplication_Report14.jpg?w=207 207w,\nhttps://images.ctfassets.net/e1rkozd9gki4/kq2qySvSvTLYY7sji9H5Y/d7c4708a7e82fb39541cba9566675b26/LineDrawingApplication_Report14.jpg?w=413 413w\"\n        sizes=\"(max-width: 413px) 100vw, 413px\"\n        loading=\"lazy\"\n      />\n        </span>\n      </span>\n<span\n        class=\"gatsby-resp-image-wrapper\"\n        style=\"position: relative; display: block; ; max-width: 413px; margin-left: auto; margin-right: auto;\"\n      >\n        <span\n          class=\"gatsby-resp-image-background-image\"\n          style=\"padding-bottom: 63.43825665859565%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASwBLAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAZACgDASIAAhEBAxEB/8QAGgAAAwADAQAAAAAAAAAAAAAAAAIEAQMFBv/EAC4QAAEDAgQCCAcAAAAAAAAAAAEAAhEDIQQFEjEiIxMVQVFhcYHRQlJjcpGh4f/EABgBAQADAQAAAAAAAAAAAAAAAAQAAQMF/8QAIxEAAQMEAQQDAAAAAAAAAAAAAgABEQMEElEhBSOBoUJhcf/aAAwDAQACEQMRAD8A8Oc0x9YtqaXGW6jzKcx+LLBx+YaDy3Sbt42G3lC09DmdBgpHL3McGxdt9gO3ySvbmpJ0YVzB9gMJLnffF3jysgDpcdxmn6xSuzjHNLgXGW2MNafDuS9d40xxOvtwD2Wg5fmRJPQ1hJkwY8UdXZkI5Ne1hfZNIyx4epKM4Wc8MMeFQc6xzRLi4DvLB7IU5y7MnN0uoViN4KEbO82XtXhZaH0rqYxFZjHh/wAMmKAiYFt77ymNDE6CBV3ueVt6z4Lhnf0Cwgu5u/BLp0yoCMFTl/2FY+tVa57RXbw/M6J/aUV65I51O/1P6pEJpV6TjDBzuXR3BpllY6vXawu6ZhjsD5KFGhFyLamI6X//2Q=='); background-size: cover; display: block;\"\n        >\n          <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"LineDrawingApplication Report15\"\n        title=\"\"\n        src=\"https://images.ctfassets.net/e1rkozd9gki4/1qy1Bh6rdxkTRLlNMzBw5w/71d2bd2a91960f64d6c2604b0280e333/LineDrawingApplication_Report15.jpg\"\n        srcset=\"https://images.ctfassets.net/e1rkozd9gki4/1qy1Bh6rdxkTRLlNMzBw5w/71d2bd2a91960f64d6c2604b0280e333/LineDrawingApplication_Report15.jpg?w=103 103w,\nhttps://images.ctfassets.net/e1rkozd9gki4/1qy1Bh6rdxkTRLlNMzBw5w/71d2bd2a91960f64d6c2604b0280e333/LineDrawingApplication_Report15.jpg?w=207 207w,\nhttps://images.ctfassets.net/e1rkozd9gki4/1qy1Bh6rdxkTRLlNMzBw5w/71d2bd2a91960f64d6c2604b0280e333/LineDrawingApplication_Report15.jpg?w=413 413w\"\n        sizes=\"(max-width: 413px) 100vw, 413px\"\n        loading=\"lazy\"\n      />\n        </span>\n      </span></p>\n<p>오른쪽 마우스가 다운되었을 경우 모든 선분들의 거리를 체크한다. 그중에 선과의 거리가 픽셀 –1이상, +1이하이 되는 선분들의 우선순위(가장 최신에 생성된 선분)를 체크한 후에 최종적으로 하나의 선을 선택한다. 하나의 선의 번호가 결정이 되면 마우스 드래그가 가능하게 전역 변수 lineMoving가 true로 변경이 되고 드래그가 가능하다.</p>\n<p><span\n        class=\"gatsby-resp-image-wrapper\"\n        style=\"position: relative; display: block; ; max-width: 650px; margin-left: auto; margin-right: auto;\"\n      >\n        <span\n          class=\"gatsby-resp-image-background-image\"\n          style=\"padding-bottom: 38.561484918793504%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,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'); background-size: cover; display: block;\"\n        >\n          <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"Screen Shot 2019-03-10 at 10.39.22 PM\"\n        title=\"\"\n        src=\"https://images.ctfassets.net/e1rkozd9gki4/6k154xxXQFUyzHqOi5vnX9/61f6f8e5cf3cdefdf89dd5f90ccc3b38/Screen_Shot_2019-03-10_at_10.39.22_PM.png\"\n        srcset=\"https://images.ctfassets.net/e1rkozd9gki4/6k154xxXQFUyzHqOi5vnX9/61f6f8e5cf3cdefdf89dd5f90ccc3b38/Screen_Shot_2019-03-10_at_10.39.22_PM.png?w=539 539w,\nhttps://images.ctfassets.net/e1rkozd9gki4/6k154xxXQFUyzHqOi5vnX9/61f6f8e5cf3cdefdf89dd5f90ccc3b38/Screen_Shot_2019-03-10_at_10.39.22_PM.png?w=1078 1078w,\nhttps://images.ctfassets.net/e1rkozd9gki4/6k154xxXQFUyzHqOi5vnX9/61f6f8e5cf3cdefdf89dd5f90ccc3b38/Screen_Shot_2019-03-10_at_10.39.22_PM.png?w=2155 2155w\"\n        sizes=\"(max-width: 650px) 100vw, 650px\"\n        loading=\"lazy\"\n      />\n        </span>\n      </span>\n<span\n        class=\"gatsby-resp-image-wrapper\"\n        style=\"position: relative; display: block; ; max-width: 414px; margin-left: auto; margin-right: auto;\"\n      >\n        <span\n          class=\"gatsby-resp-image-background-image\"\n          style=\"padding-bottom: 52.17391304347826%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEARwBHAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCAAVACgDASIAAhEBAxEB/8QAGQABAAMBAQAAAAAAAAAAAAAAAAIDBAEG/8QAKhAAAgEDAgQFBQEAAAAAAAAAAQIRAAMhBRIEIjFBEyNhcaEVUYGRwfD/xAAWAQEBAQAAAAAAAAAAAAAAAAAAAwH/xAAZEQACAwEAAAAAAAAAAAAAAAAAAQMUUpH/2gAMAwEAAhEDEQA/APDtqXHXdl0kncu7NzJx7VFuN1BbbSrboDAb8gHpiPQ1mtKps258IHC5nuoqSum173lcgB2lT2n/AH6q1ibT6yNaHC4jrcfqIVm3swXrtM/yofU9Rxy3s9OXr8Vjt8VbW2ylMlYmOnzVg421yeUOWZMfHWtsTbfWZWgwuIvbVNRRNzC8q/ciBn8UrBxPEC+RFpUgRImT75ilLM231itBhcRpTU9lpEVHBWDPidwAAYj0qDagwt3LdkOiPggvOO/YUpUS5ipSlAKUpQH/2Q=='); background-size: cover; display: block;\"\n        >\n          <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"LineDrawingApplication Report16\"\n        title=\"\"\n        src=\"https://images.ctfassets.net/e1rkozd9gki4/01B1EQ6nAaDzgTCtFrfa6j/1d7ed7c53150528e9ead8ad9c60ab522/LineDrawingApplication_Report16.jpg\"\n        srcset=\"https://images.ctfassets.net/e1rkozd9gki4/01B1EQ6nAaDzgTCtFrfa6j/1d7ed7c53150528e9ead8ad9c60ab522/LineDrawingApplication_Report16.jpg?w=104 104w,\nhttps://images.ctfassets.net/e1rkozd9gki4/01B1EQ6nAaDzgTCtFrfa6j/1d7ed7c53150528e9ead8ad9c60ab522/LineDrawingApplication_Report16.jpg?w=207 207w,\nhttps://images.ctfassets.net/e1rkozd9gki4/01B1EQ6nAaDzgTCtFrfa6j/1d7ed7c53150528e9ead8ad9c60ab522/LineDrawingApplication_Report16.jpg?w=414 414w\"\n        sizes=\"(max-width: 414px) 100vw, 414px\"\n        loading=\"lazy\"\n      />\n        </span>\n      </span></p>\n<p>선분들의 거리를 비교하여 distanceResult[10]에 저장하고, 거리 차이가 1 이하인 선들 중에 가장 나중에 만들어진 선을 lineSelect 변수에 저장한다.</p>\n<div class=\"gatsby-highlight\" data-language=\"cpp\"><pre class=\"language-cpp\"><code class=\"language-cpp\"><span class=\"token keyword\">for</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span> l <span class=\"token operator\">=</span> <span class=\"token number\">0</span><span class=\"token punctuation\">;</span> l <span class=\"token operator\">&lt;</span> <span class=\"token punctuation\">(</span><span class=\"token keyword\">int</span><span class=\"token punctuation\">)</span> lines<span class=\"token punctuation\">.</span><span class=\"token function\">size</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> l<span class=\"token operator\">++</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>distanceResult<span class=\"token punctuation\">[</span>l<span class=\"token punctuation\">]</span> <span class=\"token operator\">>=</span> <span class=\"token operator\">-</span><span class=\"token number\">1</span> <span class=\"token operator\">&amp;&amp;</span> distanceResult<span class=\"token punctuation\">[</span>l<span class=\"token punctuation\">]</span> <span class=\"token operator\">&lt;=</span> <span class=\"token number\">1</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    lineSelect <span class=\"token operator\">=</span> l<span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>위 디버그 출력을 보게 되면, 현재 좌표와 line 1과 line 4의 거리가 픽셀 1 이하인 것을 확인할 수 있다. 그러나 line 4가 나중에 생성되었기 때문에 line 4번이 선택되었다. 결국 드래그를 시도할 경우 line4번만 움직이게 된다.</p>\n<p>마우스가 움직일 때 작동되는 소스</p>\n<div class=\"gatsby-highlight\" data-language=\"cpp\"><pre class=\"language-cpp\"><code class=\"language-cpp\"><span class=\"token keyword\">case</span> WM_MOUSEMOVE<span class=\"token operator\">:</span>\n  <span class=\"token comment\">// 마우스가 왼쪽 클릭된 상태에서 움직일 경우(선 그리기)</span>\n  <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>inputting<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span> <span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span><span class=\"token punctuation\">.</span>\n  <span class=\"token punctuation\">}</span> <span class=\"token comment\">// 잠시 생략</span>\n  <span class=\"token comment\">// 마우스가 왼쪽 클릭된 상태에서 움직일 경우(선 드래그)</span>\n  <span class=\"token keyword\">else</span> <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>lineMoving<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token comment\">// 실수형 intervalX, intervalY를 통해 선택된 라인의 X와 Y의 변경을 통해 드래그 효과</span>\n    를 만듬\n    <span class=\"token keyword\">double</span> intervalX <span class=\"token operator\">=</span> <span class=\"token number\">0.0</span><span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">double</span> intervalY <span class=\"token operator\">=</span> <span class=\"token number\">0.0</span><span class=\"token punctuation\">;</span>\n    HDC hdc <span class=\"token operator\">=</span> <span class=\"token operator\">::</span><span class=\"token function\">GetDC</span><span class=\"token punctuation\">(</span>hWnd<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span><span class=\"token operator\">::</span><span class=\"token function\">SetROP2</span><span class=\"token punctuation\">(</span>hdc<span class=\"token punctuation\">,</span> R2_NOTXORPEN<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token comment\">// 이전 라인을 지움</span>\n    <span class=\"token function\">drawLine</span><span class=\"token punctuation\">(</span>hdc<span class=\"token punctuation\">,</span> lines<span class=\"token punctuation\">[</span>lineSelect<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token comment\">// 현재 클릭된 오른쪽 마우스와 line 구조체의 p0과 p1의 거리를 비교해 어디를 기준으로</span>\n    드래그 할 것인지 분별\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span><span class=\"token function\">GetDistance2</span><span class=\"token punctuation\">(</span>lines<span class=\"token punctuation\">[</span>lineSelect<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>p0<span class=\"token punctuation\">,</span> <span class=\"token function\">LOWORD</span><span class=\"token punctuation\">(</span>lParam<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token function\">HIWORD</span><span class=\"token punctuation\">(</span>lParam<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">>=</span>\n      <span class=\"token function\">GetDistance2</span><span class=\"token punctuation\">(</span>lines<span class=\"token punctuation\">[</span>lineSelect<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>p1<span class=\"token punctuation\">,</span> <span class=\"token function\">LOWORD</span><span class=\"token punctuation\">(</span>lParam<span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token function\">HIWORD</span><span class=\"token punctuation\">(</span>lParam<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n      intervalX <span class=\"token operator\">=</span> <span class=\"token function\">LOWORD</span><span class=\"token punctuation\">(</span>lParam<span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span> lines<span class=\"token punctuation\">[</span>lineSelect<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>p1<span class=\"token punctuation\">.</span>x<span class=\"token punctuation\">;</span>\n      intervalY <span class=\"token operator\">=</span> <span class=\"token function\">HIWORD</span><span class=\"token punctuation\">(</span>lParam<span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span> lines<span class=\"token punctuation\">[</span>lineSelect<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>p1<span class=\"token punctuation\">.</span>y<span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n      intervalX <span class=\"token operator\">=</span> <span class=\"token function\">LOWORD</span><span class=\"token punctuation\">(</span>lParam<span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span> lines<span class=\"token punctuation\">[</span>lineSelect<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>p0<span class=\"token punctuation\">.</span>x<span class=\"token punctuation\">;</span>\n      intervalY <span class=\"token operator\">=</span> <span class=\"token function\">HIWORD</span><span class=\"token punctuation\">(</span>lParam<span class=\"token punctuation\">)</span> <span class=\"token operator\">-</span> lines<span class=\"token punctuation\">[</span>lineSelect<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>p0<span class=\"token punctuation\">.</span>y<span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n    <span class=\"token comment\">// intervalX를 통해 p0과 p1의 x값을 동일하게 증감</span>\n    <span class=\"token comment\">// intervalY를 통해 p0과 p1의 y값을 동일하게 증감</span>\n    lines<span class=\"token punctuation\">[</span>lineSelect<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>p0<span class=\"token punctuation\">.</span>x <span class=\"token operator\">+=</span> intervalX<span class=\"token punctuation\">;</span>\n    lines<span class=\"token punctuation\">[</span>lineSelect<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>p0<span class=\"token punctuation\">.</span>y <span class=\"token operator\">+=</span> intervalY<span class=\"token punctuation\">;</span>\n    lines<span class=\"token punctuation\">[</span>lineSelect<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>p1<span class=\"token punctuation\">.</span>x <span class=\"token operator\">+=</span> intervalX<span class=\"token punctuation\">;</span>\n    lines<span class=\"token punctuation\">[</span>lineSelect<span class=\"token punctuation\">]</span><span class=\"token punctuation\">.</span>p1<span class=\"token punctuation\">.</span>y <span class=\"token operator\">+=</span> intervalY<span class=\"token punctuation\">;</span>\n    <span class=\"token comment\">// 이후 라인을 그림</span>\n    <span class=\"token function\">drawLine</span><span class=\"token punctuation\">(</span>hdc<span class=\"token punctuation\">,</span> lines<span class=\"token punctuation\">[</span>lineSelect<span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span><span class=\"token operator\">::</span><span class=\"token function\">ReleaseDC</span><span class=\"token punctuation\">(</span>hWnd<span class=\"token punctuation\">,</span> hdc<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span>\n  <span class=\"token keyword\">break</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>위 소스를 보면 'GetDistance2' 함수를 이용해 현재 위치와 라인의 p0, p1의 거리를 비교하여서 어디를 눌러서 드래그할 것인지를 분별하여 드래그하게 된다. 만일 p0의 위치가 현재 오른쪽 마우스 다운한 위치와 더 가깝다면 p0의 위치를 선택하여 선의 드래그가 시작되고, 반대로 p1의 위치가 더 가깝다면 p1의 위치를 선택하여 선의 드래그가 시작되고 마우스를 움직이면 된다. 'GetDistance2' 함수를 이용하여 p0 또는 p1를 정하게 되면 그것을 기분으로 현재 움직이는 마우스의 좌표의 X, Y 차이를 통해 line의 모든 변수를 이동시킨다.</p>\n<h3 id=\"7-창의-변화\" style=\"position:relative;\"><a href=\"#7-%EC%B0%BD%EC%9D%98-%EB%B3%80%ED%99%94\" aria-label=\"7 창의 변화 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>7. 창의 변화</h3>\n<p><span\n        class=\"gatsby-resp-image-wrapper\"\n        style=\"position: relative; display: block; ; max-width: 650px; margin-left: auto; margin-right: auto;\"\n      >\n        <span\n          class=\"gatsby-resp-image-background-image\"\n          style=\"padding-bottom: 31.40681003584229%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,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'); background-size: cover; display: block;\"\n        >\n          <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"Screen Shot 2019-03-10 at 10.43.52 PM\"\n        title=\"\"\n        src=\"https://images.ctfassets.net/e1rkozd9gki4/1Joy17qwiwu2ZTEwqhUYYc/04af3e099d3073671737c30b1cc11253/Screen_Shot_2019-03-10_at_10.43.52_PM.png\"\n        srcset=\"https://images.ctfassets.net/e1rkozd9gki4/1Joy17qwiwu2ZTEwqhUYYc/04af3e099d3073671737c30b1cc11253/Screen_Shot_2019-03-10_at_10.43.52_PM.png?w=558 558w,\nhttps://images.ctfassets.net/e1rkozd9gki4/1Joy17qwiwu2ZTEwqhUYYc/04af3e099d3073671737c30b1cc11253/Screen_Shot_2019-03-10_at_10.43.52_PM.png?w=1116 1116w,\nhttps://images.ctfassets.net/e1rkozd9gki4/1Joy17qwiwu2ZTEwqhUYYc/04af3e099d3073671737c30b1cc11253/Screen_Shot_2019-03-10_at_10.43.52_PM.png?w=2232 2232w\"\n        sizes=\"(max-width: 650px) 100vw, 650px\"\n        loading=\"lazy\"\n      />\n        </span>\n      </span></p>\n<div class=\"gatsby-highlight\" data-language=\"cpp\"><pre class=\"language-cpp\"><code class=\"language-cpp\"><span class=\"token comment\">// 라인 구조체</span>\n<span class=\"token keyword\">typedef</span> <span class=\"token keyword\">struct</span> <span class=\"token class-name\">Line</span> <span class=\"token punctuation\">{</span>\n  POINT p0<span class=\"token punctuation\">;</span>\n  POINT p1<span class=\"token punctuation\">;</span>\n  COLORREF color<span class=\"token punctuation\">;</span> <span class=\"token comment\">//0x00bbggrr</span>\n<span class=\"token punctuation\">}</span> Line<span class=\"token punctuation\">;</span>\n\n<span class=\"token comment\">// 입력된 모든 라인들을 가지는 벡터</span>\nstd<span class=\"token operator\">::</span>vector <span class=\"token operator\">&lt;</span> Line <span class=\"token operator\">></span> lines<span class=\"token punctuation\">;</span></code></pre></div>\n<p>모든 선들은 전역으로 선언된 구조체 line, 벡터 lines를 사용하기 때문에 창의 변화가 있더라도 올바르게 잘 그려주고 드래그도 잘 된다.</p>\n<h3 id=\"8-과제-소감\" style=\"position:relative;\"><a href=\"#8-%EA%B3%BC%EC%A0%9C-%EC%86%8C%EA%B0%90\" aria-label=\"8 과제 소감 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>8. 과제 소감</h3>\n<p><span\n        class=\"gatsby-resp-image-wrapper\"\n        style=\"position: relative; display: block; ; max-width: 650px; margin-left: auto; margin-right: auto;\"\n      >\n        <span\n          class=\"gatsby-resp-image-background-image\"\n          style=\"padding-bottom: 75%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAjACMAAD/2wBDABALDA4MChAODQ4SERATGCcZGBYWGDAiJBwnOTI8OzgyNzY/R1pMP0NVRDY3TmtPVV1gZWZlPUtvd25idlpjZWH/2wBDARESEhgVGC4ZGS5hQTdBYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWH/wAARCAAeACgDASIAAhEBAxEB/8QAGwAAAgMAAwAAAAAAAAAAAAAABQYAAgMBBAf/xAAtEAACAQMCBQEHBQAAAAAAAAABAgMABBEFIRITMWGBBhQjQVFScaEyQ7HB0v/EABYBAAMAAAAAAAAAAAAAAAAAAAEDBP/EAB0RAAICAgMBAAAAAAAAAAAAAAABAhEDEhNBUSH/2gAMAwEAAhEDEQA/AH1pFQZZgo+ZOKxS4JeRUhkcK2Mgrg7A/E96Tbn1BfOrQySR42JzCR0365rCH1heWvEqJbMC2TlG22A+rtR1dgTTHsyyE49nlHclf9VhPcvEOI2s3DkDiymNzj6s/iq6HqJ1TS4rpwquxIYL0GDVtZmFvpc87fpjAc+CDQaCJ3qezaeeS4XJ4Aq4LfP4AVK4fW4Z2nPKkJThmCnYErjbftUqe34UqqBLBo2DS2zwqQcBsLnya64t1kJKRk9w/F/ANGk9P865ZhOIkPRUQAjzRi19M2Knjn5s5G/vHP8AWKoc0S6sXLbT9RaPEM1wtvn9ksyg/YDY+KyuNO1Ro5UHtXDjJD8SgjzjNOVpqVtFIbPTbNVddiXIQfjJNEisq2shuBEXPTlrgAeaXLI+higu0ebREJcNzEdQVGcRkDZcHqalGdX0VZ2aWOTl9gPx9qlLWXG/tjuOfh//2Q=='); background-size: cover; display: block;\"\n        >\n          <img\n        class=\"gatsby-resp-image-image\"\n        style=\"width: 100%; height: 100%; margin: 0; vertical-align: middle; position: absolute; top: 0; left: 0; box-shadow: inset 0px 0px 0px 400px white;\"\n        alt=\"LineDrawingApplication Report17\"\n        title=\"\"\n        src=\"https://images.ctfassets.net/e1rkozd9gki4/1yS51WGAMXSNhpUixJs7ez/d8de0d060f2172966e3bc903a936abd0/LineDrawingApplication_Report17.jpg\"\n        srcset=\"https://images.ctfassets.net/e1rkozd9gki4/1yS51WGAMXSNhpUixJs7ez/d8de0d060f2172966e3bc903a936abd0/LineDrawingApplication_Report17.jpg?w=200 200w,\nhttps://images.ctfassets.net/e1rkozd9gki4/1yS51WGAMXSNhpUixJs7ez/d8de0d060f2172966e3bc903a936abd0/LineDrawingApplication_Report17.jpg?w=400 400w,\nhttps://images.ctfassets.net/e1rkozd9gki4/1yS51WGAMXSNhpUixJs7ez/d8de0d060f2172966e3bc903a936abd0/LineDrawingApplication_Report17.jpg?w=800 800w\"\n        sizes=\"(max-width: 650px) 100vw, 650px\"\n        loading=\"lazy\"\n      />\n        </span>\n      </span>\n이번 과제를 통해서 GDI, Win32 API, Visual Studio의 확장자 등을 공부하게 되었다. 과제를 해보기 전에는 선 그리기, 움직임을 구현한다는 것이 쉽고 단순할 거라고 생각했는데, 직접 구현하려고 하니 다양한 변수, 메서드, 함수들이 필요하다는 것을 느꼈다. 그리고 사용자가 생각하지 못한 방법으로 프로그램을 사용할 수 있기에 여러 상황들을 미리 예측해볼 수 있는 시간도 가질 수 있어서 프로그래밍 공부에도 도움이 되었다. 특히 TRACE 함수를 이용해 디버그 용도로 다양한 값들을 출력해보면서 내가 구현하고 있는 프로그램 변수의 값들과 진행 상황들을 볼 수 있어서 좋았다. TRACE 함수로 문자열을 출력하려고 했을 때 계속 오류가 나서 30분 동안 혹시 내가 코딩을 잘못했나 싶었는데, 문자열 앞에 ‘_T’를 표시하지 않아서였다. 이러한 작은 글자에도 프로그램은 예민하게 받아들이는 모습에 더 기계적인 관점에서 코딩하게 된 것 같다. 이 과제가 ‘게임 프로그래밍’ 수업의 첫 과제이지만 앞으로 진행될 수업과 과제가 더욱 기대가 되고 개발자로서 더 열정을 다해 개발해보고 싶다.</p>","excerpt":"선분 그리기 응용프로그램 실행 화면 및 소스 설명 1. 처음 실행한 모습   처음 실행한 상태에서 오른쪽 버튼을 클릭하게 되면 , WndProc…"}}}}]}},"pageContext":{"limit":6,"skip":7,"numPages":2,"currentPage":2}}}