<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>digital520</title>
    <link>https://digital520.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Sun, 5 Apr 2026 12:32:56 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>digital520</managingEditor>
    <item>
      <title>위니브 바이브코딩 캠프 도전기와 프로젝트</title>
      <link>https://digital520.tistory.com/58</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;4박 5일간의 위니브 바이브코딩 캠프 도전기와 프로젝트 &lt;br&gt;&lt;br&gt;[Thread 1: 인트로 &amp;amp; 도전 시작]&lt;br&gt;  1월 5일, 바이브코딩(Vibe Coding)의 시작!&lt;br&gt;&lt;br&gt;제주 게이미피케이션 여행 앱 &amp;lt;Jeju Quest&amp;gt;의 랜딩페이지를 개발하고 배포까지 마쳤습니다.&lt;br&gt;&lt;br&gt;그 치열했던 4박 5일의 개발 기록과 기술 스택을 공유합니다. &lt;br&gt;&lt;br&gt;[Thread 2: 프로젝트 소개 &amp;amp; 백엔드]&lt;br&gt;  Project: Jeju Quest 랜딩페이지&lt;br&gt;제주 여행에 게임 요소를 더한 서비스의 시장 검증을 위한 랜딩페이지입니다.&lt;br&gt;&lt;br&gt;  Backend Tech Stack&lt;br&gt;안정적이고 빠른 개발을 위해 Python 생태계를 선택했습니다.&lt;br&gt;&lt;br&gt;* Lang: Python 3.11 &lt;br&gt;* Framework: Django 5.x&lt;br&gt;* Server: Gunicorn (WSGI)&lt;br&gt;* DB:SQLite (개발/배포 용이성)&lt;br&gt;&lt;br&gt;기본에 충실하면서도 확장성을 고려한 세팅!&lt;br&gt;&lt;br&gt;[Thread 3: 프론트엔드 &amp;amp; 디자인 시스템]&lt;br&gt;  Frontend &amp;amp; Design&lt;br&gt;복잡한 프레임워크 대신, Django Templates와 Vanilla JS로 가볍게 구성했습니다.&lt;br&gt;&lt;br&gt;* Rendering:Server-side Rendering (Django Templates)&lt;br&gt;* Style:Vanilla CSS (CSS Variables 기반 디자인 시스템)&lt;br&gt;* Interaction:Vanilla JS&lt;br&gt;* Icons:Lucide Icons&lt;br&gt;&lt;br&gt;  Typography&lt;br&gt;&lt;br&gt;* 본문: Pretendard (가독성 1티어!)&lt;br&gt;* 로고:Playfair Display(Jeju) + Pacifico(Quest) 조합으로 감성 더하기&lt;br&gt;&lt;br&gt;[Thread 4: 주요 기능 &amp;amp; 외부 API]&lt;br&gt;  Key Features&lt;br&gt;단순한 페이지 같지만, 마케팅에 필수적인 기능들을 꽉 채웠습니다.&lt;br&gt;&lt;br&gt;1. 사전예약 폼:이메일 수집 및 DB 저장&lt;br&gt;2. 추천인 시스템:바이럴을 위한 코드 생성 및 추적&lt;br&gt;3. 티저 퀴즈:유저 흥미 유발&lt;br&gt;4. 공유 기능: Kakao JavaScript SDK 연동으로 카톡/인스타 공유 &lt;br&gt;&lt;br&gt;[Thread 5: 인프라 &amp;amp; 프로젝트 구조]&lt;br&gt;Infra &amp;amp; Deploy&lt;br&gt;비용 효율적인 무료 플랜을 활용해 배포까지 완료!&lt;br&gt;&lt;br&gt;* Hosting:Render (Free Plan)&lt;br&gt;* CI/CD:GitHub (소스 관리 및 자동 배포)&lt;br&gt;&lt;br&gt;  Project Structure&lt;br&gt;`jeju-quest-landing/`&lt;br&gt;├── `config/` (Django 설정)&lt;br&gt;├── `landing/` (핵심 로직: models, views)&lt;br&gt;├── `templates/` (HTML 구조)&lt;br&gt;└── `static/` (CSS, Img)&lt;br&gt;&lt;br&gt;[Thread 6: 마무리]&lt;br&gt;4박 5일이라는 짧은 시간 동안 기획부터 배포까지, 몰입의 즐거움을 제대로 느꼈던 시간이었습니다.&lt;br&gt;&lt;br&gt;단순히 코드를 짜는 것을 넘어, 서비스를 어떻게 보여줄지 고민했던 Jeju Quest 프로젝트! &lt;br&gt;&lt;br&gt;#바이브사계 #바이브코딩 #위니브 #오피스제주 #제주런케이션 #개발로그 #제주여행게임앱 #제주퀘스트 #랜딩페이지&lt;br&gt;&lt;br&gt;&lt;a href=&quot;https://jeju-quest-landing.onrender.com/&quot; target=&quot;_blank&quot;&gt;&lt;span&gt;https://jeju-quest-landing.onrender.com/&lt;/span&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;</description>
      <author>digital520</author>
      <guid isPermaLink="true">https://digital520.tistory.com/58</guid>
      <comments>https://digital520.tistory.com/58#entry58comment</comments>
      <pubDate>Sun, 11 Jan 2026 03:04:46 +0900</pubDate>
    </item>
    <item>
      <title>위니브 바이브코딩 참가 후기</title>
      <link>https://digital520.tistory.com/57</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;위니브 바이브코딩 참가 후기&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2936&quot; data-origin-height=&quot;2268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0VLWf/dJMcaiIK9EX/ZuwbOjFkMUBLBKBhGKNzC0/tfile.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0VLWf/dJMcaiIK9EX/ZuwbOjFkMUBLBKBhGKNzC0/tfile.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0VLWf/dJMcaiIK9EX/ZuwbOjFkMUBLBKBhGKNzC0/tfile.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0VLWf%2FdJMcaiIK9EX%2FZuwbOjFkMUBLBKBhGKNzC0%2Ftfile.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2936&quot; height=&quot;2268&quot; data-origin-width=&quot;2936&quot; data-origin-height=&quot;2268&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;&lt;br&gt;올해 새해 첫 번째 목표는 분명했다.&lt;br&gt;바이브코딩을 통해 내가 직접 만들고 싶은 서비스를&lt;br&gt;기획하고, 개발하고, 배포까지 해보는 것.&lt;br&gt;&lt;br&gt;그래서 책도 사서 보고,&lt;br&gt;동영상 강의도 구매해 실험도 해 보았다.&lt;br&gt;하지만 혼자서는 늘 어딘가 막히는 느낌이 있었다.&lt;br&gt;&lt;br&gt;그러던 중&lt;br&gt;위니브 바이브코딩 1기 캠프가 열린다는 소식을 접했고,&lt;br&gt;고민 없이 바로 신청했다.&lt;br&gt;&lt;br&gt;위니브는 제주를 대표하는 ICT 교육 콘텐츠 기업이다.&lt;br&gt;과거 이호준 대표님의 데이터 분석 여름 특강을 수강한 경험이 있었기에 이번 바이브코딩 캠프 역시 믿고 선택할 수 있었다.&lt;br&gt;솔직히 기대도 컸다.&lt;br&gt;&lt;br&gt;그리고 보통 기대가 크면 실망도 따르기 마련인데…&lt;br&gt;&lt;br&gt;이번 캠프는 달랐다.&lt;br&gt;&lt;br&gt;1월 5일, 첫 강의.&lt;br&gt;4박 5일 동안 기획 → 개발 → 배포까지 완주한다는 커리큘럼에 설렘과 긴장이 동시에 있었다.&lt;br&gt;&lt;br&gt;참여자 구성도 인상적이었다.&lt;br&gt;개발자가 아닌 20대부터 60대까지의 대표, 예비 창업자, 기획자, 디자이너 등 일반인 중심의 캠프였다.&lt;br&gt;&lt;br&gt;바이브코딩은 누구나 시도할 수 있지만,&lt;br&gt;실제로 서비스를 끝까지 만들어 배포하는 건 결코 쉽지 않다.&lt;br&gt;&lt;br&gt;그런데 첫 강의를 듣자마자 느낀 점은&lt;br&gt;참가자 수준에 맞게 커리큘럼이 정말 잘 설계되어 있다는 것이었다.&lt;br&gt;&lt;br&gt;“이건 된다”는 확신이 들었다.&lt;br&gt;&lt;br&gt;강의는 매일 13:30부터 18:00까지.&lt;br&gt;&lt;br&gt;그리고 강의가 끝나면&lt;br&gt;각자 배운 내용을 바탕으로&lt;br&gt;자신의 서비스를 만들기 위해 밤늦게까지 몰입한다.&lt;br&gt;&lt;br&gt;그 분위기 자체가&lt;br&gt;나에게도 큰 동기부여가 되었다.&lt;br&gt;&lt;br&gt;그리고 오늘, 1월 9일.&lt;br&gt;드디어 발표 날.&lt;br&gt;&lt;br&gt;각자가 치열하게 기획하고, 개발하고,&lt;br&gt;실제로 배포까지 완료한 서비스를 선보였다.&lt;br&gt;&lt;br&gt;처음엔 “과연 가능할까?” 싶었지만,&lt;br&gt;모든 참여자가 끝까지 해냈다.&lt;br&gt;진심으로 큰 박수를 보내고 싶다.&lt;br&gt;&lt;br&gt;이번 캠프는&lt;br&gt;기대에서 시작해, 큰 기대로 끝난 캠프였다.&lt;br&gt;&lt;br&gt;위니브 바이브코딩 캠프가&lt;br&gt;제주를 대표하는 교육 브랜드로&lt;br&gt;오래오래 자리 잡기를 진심으로 응원합니다.&lt;br&gt;&lt;br&gt;#바이브사계 #바이브코딩 #위니브 #오피스제주 #제주런케이션&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3392&quot; data-origin-height=&quot;2544&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvoRv1/dJMcachvyEF/IAXPDmsLyKMBdpgh65tpa1/tfile.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvoRv1/dJMcachvyEF/IAXPDmsLyKMBdpgh65tpa1/tfile.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvoRv1/dJMcachvyEF/IAXPDmsLyKMBdpgh65tpa1/tfile.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvoRv1%2FdJMcachvyEF%2FIAXPDmsLyKMBdpgh65tpa1%2Ftfile.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3392&quot; height=&quot;2544&quot; data-origin-width=&quot;3392&quot; data-origin-height=&quot;2544&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;3375&quot; data-origin-height=&quot;2268&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckhHWs/dJMcaiIK9EY/sWPuozBNLLdtQAiZQtUdu0/tfile.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckhHWs/dJMcaiIK9EY/sWPuozBNLLdtQAiZQtUdu0/tfile.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckhHWs/dJMcaiIK9EY/sWPuozBNLLdtQAiZQtUdu0/tfile.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckhHWs%2FdJMcaiIK9EY%2FsWPuozBNLLdtQAiZQtUdu0%2Ftfile.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3375&quot; height=&quot;2268&quot; data-origin-width=&quot;3375&quot; data-origin-height=&quot;2268&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;893&quot; data-origin-height=&quot;1263&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2CiQT/dJMcaiIK9EZ/LqxUgjFIXYJaO2XqZqWaN0/tfile.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2CiQT/dJMcaiIK9EZ/LqxUgjFIXYJaO2XqZqWaN0/tfile.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2CiQT/dJMcaiIK9EZ/LqxUgjFIXYJaO2XqZqWaN0/tfile.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2CiQT%2FdJMcaiIK9EZ%2FLqxUgjFIXYJaO2XqZqWaN0%2Ftfile.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;893&quot; height=&quot;1263&quot; data-origin-width=&quot;893&quot; data-origin-height=&quot;1263&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;</description>
      <author>digital520</author>
      <guid isPermaLink="true">https://digital520.tistory.com/57</guid>
      <comments>https://digital520.tistory.com/57#entry57comment</comments>
      <pubDate>Fri, 9 Jan 2026 22:22:47 +0900</pubDate>
    </item>
    <item>
      <title>Part 5. 수익형 웹 서비스 구현하기(4) - 주식 투자 포트폴리오 만들기</title>
      <link>https://digital520.tistory.com/56</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;5-1. 주식 투자 포트폴리오 미리보기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;930&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dBB9mD/btsGntAlE8T/SUVQXYfeDOMuquUwNkN6p1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dBB9mD/btsGntAlE8T/SUVQXYfeDOMuquUwNkN6p1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dBB9mD/btsGntAlE8T/SUVQXYfeDOMuquUwNkN6p1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdBB9mD%2FbtsGntAlE8T%2FSUVQXYfeDOMuquUwNkN6p1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;930&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;930&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5-2. 주식 투자 포트폴리오의 프로그래밍적 원리 이해하기&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Dictionary 자료형&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JavaScript에는 DIctionary(딕셔너리, 사전)라는 자료형이 있습니다. 딕셔너리는 비슷한 형태의 많은 값들을 저장할 때 유리합니다. 우리는 여러 주식 종목을 딕셔너리를 사용해서 저장하려고 해요. 딕셔너리는 아래와 같이 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;종목 평단가 보유수량&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-04-04 171854.png&quot; data-origin-width=&quot;587&quot; data-origin-height=&quot;221&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ALrxH/btsGlv0peCV/fZruw8rkycdPM7YokTthOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ALrxH/btsGlv0peCV/fZruw8rkycdPM7YokTthOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ALrxH/btsGlv0peCV/fZruw8rkycdPM7YokTthOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FALrxH%2FbtsGlv0peCV%2FfZruw8rkycdPM7YokTthOK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;587&quot; height=&quot;221&quot; data-filename=&quot;스크린샷 2024-04-04 171854.png&quot; data-origin-width=&quot;587&quot; data-origin-height=&quot;221&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1712218775404&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var stocks = {
    &quot;삼성전자&quot;: {
        price: 20000,
        amount: 2
    },
    &quot;아마존&quot;: {
        price: 30000,
        amount: 3
    },
    &quot;애플&quot;: {
        price: 40000,
        amount: 4
    },
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;딕셔너리에 저장되어 있는 값을 가져오려면 다음과 같이 코드를 작성합니다. 만약 삼성전자의 정보를 가져오고 싶다면:&lt;/p&gt;
&lt;pre id=&quot;code_1712218796576&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;console.log(stocks[&quot;삼성전자&quot;]);
// {price: 20000, amount: 2}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;삼성전자의 주식 가격과 수량을 가져오고 싶다면 아래와 같이 작성합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712218817980&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;console.log(stocks[&quot;삼성전자&quot;][&quot;price&quot;]);
// 20000
console.log(stocks[&quot;삼성전자&quot;][&quot;amount&quot;]);
// 2&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;딕셔너리에 저장된 값을 변경하는 것도 가능합니다. 만약 애플 주식의 보유수량을 변경하고 싶다면 아래와 같이 작성해요.&lt;/p&gt;
&lt;pre id=&quot;code_1712218842069&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;stocks[&quot;애플&quot;][&quot;amount&quot;] = 10;

console.log(stocks[&quot;애플&quot;])

// {price: 40000, amount: 10}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;총 보유주식 평가금액 계산하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리가 보유한 주식은 모두 딕셔너리에 저장되어 있습니다. 우리가 보유한 주식의 총 평가금액을 계산하기 위해서는 아래와 같은 코드를 작성합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712218857108&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;stocksPrice =
    stocks[&quot;삼성전자&quot;][&quot;price&quot;] * stocks[&quot;삼성전자&quot;][&quot;amount&quot;]
    + stocks[&quot;아마존&quot;][&quot;price&quot;] * stocks[&quot;아마존&quot;][&quot;amount&quot;]
    + stocks[&quot;애플&quot;][&quot;price&quot;] * stocks[&quot;애플&quot;][&quot;amount&quot;];

console.log(stocksPrice);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;[심화] for 반복문 사용하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 방법은 정말 직관적이지만 종목이 추가될 때마다 코드가 계속 길어진다는 단점이 있습니다. 그리고 종목 이름만 바뀔 뿐 연산하는 순서와 구조는 종목마다 완전히 동일하죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 코드를 사용해도 무관하나 조금 더 편한 방법은 JavaScript의 for 구문을 사용하는 것입니다. 아래처럼요.&lt;/p&gt;
&lt;pre id=&quot;code_1712218871845&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var stocksPrice; // 총 보유주식 평가금액

stocksPrice = 0; // 0원 초기화

for (var event in stocks) { // 종목 개수만큼 아래 구문 반복
    var stock = stocks[event]; // 종목 선택

    stocksPrice = stocksPrice + stock[&quot;price&quot;] * stock[&quot;amount&quot;]; // 가격 계산 및 합산
}

console.log(stocksPrice); // 결과 출력&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;for 구문은 종목 단위로 순차적으로 계산합니다. 위 예제에서는 for 구문 안에 있는 코드가 종목 개수만큼 3번 반복됩니다. 차례로 한 종목씩 가격을 계산해 stocksPrice에 더해주고, 마지막에 stocksPrice 를 출력하면 보유 주식의 총 평가금액을 구할 수 있죠!&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;함수(Function) 사용하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로그래머들은 반복적인 일을 매우 싫어하여 함수라는 개념을 만들어 함수를 재활용합니다. 우리는 앞 파트에서도 이미 함수들을 사용하고 있었는데요. 조금만 더 깊게 공부해보죠.&lt;/p&gt;
&lt;pre id=&quot;code_1712218892192&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function plus(a, b) {
		return a + b;
}

var result = plus(2, 3);

console.log(result);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 코드는 a와 b를 더해 반환하는 간단한 함수를 만들었습니다. 우리는 plus()라는 함수에 a=2, b=3 을 넣어 a와 b를 더하게끔 할 수 있죠. a와 b에 어떤 값을 넣을지는 여러분의 자유입니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5-3. HTML로 포트폴리오 틀 만들기&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;보일러플레이트&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로운 프로젝트를 시작할 때는 항상 보일러플레이트 코드부터 시작합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712218916229&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&amp;gt;
    &amp;lt;title&amp;gt;Hello, world!&amp;lt;/title&amp;gt;
    &amp;lt;link href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;main class=&quot;container&quot;&amp;gt;
        &amp;lt;h1&amp;gt;Hello, world!&amp;lt;/h1&amp;gt;
    &amp;lt;/main&amp;gt;

    &amp;lt;script src=&quot;https://code.jquery.com/jquery-3.6.1.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;script.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;script.js&lt;/p&gt;
&lt;pre id=&quot;code_1712218937115&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$(document).ready(function() {

});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;style.css&lt;/p&gt;
&lt;pre id=&quot;code_1712218957665&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/* 비어있음 */&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;현황판 만들기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보유자산, 평가손익, 수익률을 한 눈에 볼 수 있는 현황판을 작성합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712218980082&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;h1&amp;gt;주식투자 포트폴리오&amp;lt;/h1&amp;gt;

&amp;lt;div&amp;gt;총 보유자산 &amp;lt;span id=&quot;total&quot;&amp;gt;0&amp;lt;/span&amp;gt; 원&amp;lt;/div&amp;gt;

&amp;lt;div&amp;gt;총 보유현금 &amp;lt;span id=&quot;cash&quot;&amp;gt;0&amp;lt;/span&amp;gt; 원&amp;lt;/div&amp;gt;

&amp;lt;div&amp;gt;총 보유주식 &amp;lt;span id=&quot;stocks-price&quot;&amp;gt;0&amp;lt;/span&amp;gt; 원&amp;lt;/div&amp;gt;

&amp;lt;div&amp;gt;평가손익 &amp;lt;span id=&quot;profit&quot;&amp;gt;0&amp;lt;/span&amp;gt; 원&amp;lt;/div&amp;gt;

&amp;lt;div&amp;gt;수익률 &amp;lt;span id=&quot;percentage&quot;&amp;gt;0&amp;lt;/span&amp;gt; %&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;거래 기록 만들기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;거래기록은 테이블(표)로 만들어주겠습니다. Bootstrap 문서를 참고해주세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Tables 문서: &lt;a href=&quot;https://getbootstrap.com/docs/5.2/content/tables/&quot;&gt;https://getbootstrap.com/docs/5.2/content/tables/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712218995772&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Tables&quot; data-og-description=&quot;Documentation and examples for opt-in styling of tables (given their prevalent use in JavaScript plugins) with Bootstrap.&quot; data-og-host=&quot;getbootstrap.com&quot; data-og-source-url=&quot;https://getbootstrap.com/docs/5.2/content/tables/&quot; data-og-url=&quot;https://getbootstrap.com/docs/5.2/content/tables/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bwflAp/hyVJR6WRbN/x3NaXhhkPpIrzE7I28V4KK/img.png?width=2000&amp;amp;height=1000&amp;amp;face=0_0_2000_1000&quot;&gt;&lt;a href=&quot;https://getbootstrap.com/docs/5.2/content/tables/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://getbootstrap.com/docs/5.2/content/tables/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bwflAp/hyVJR6WRbN/x3NaXhhkPpIrzE7I28V4KK/img.png?width=2000&amp;amp;height=1000&amp;amp;face=0_0_2000_1000');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Tables&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Documentation and examples for opt-in styling of tables (given their prevalent use in JavaScript plugins) with Bootstrap.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;getbootstrap.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  table class 안에 table-striped, table-hover를 넣어 더 예쁘게 꾸며줍니다. 문서에 보면 다양한 옵션들이 많아요!&lt;/p&gt;
&lt;pre id=&quot;code_1712219020695&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;table class=&quot;table table-striped table-hover&quot;&amp;gt;
    &amp;lt;thead&amp;gt;
        &amp;lt;tr&amp;gt;
            &amp;lt;th scope=&quot;col&quot;&amp;gt;시간&amp;lt;/th&amp;gt;
            &amp;lt;th scope=&quot;col&quot;&amp;gt;종목&amp;lt;/th&amp;gt;
            &amp;lt;th scope=&quot;col&quot;&amp;gt;거래&amp;lt;/th&amp;gt;
            &amp;lt;th scope=&quot;col&quot;&amp;gt;평단가&amp;lt;/th&amp;gt;
            &amp;lt;th scope=&quot;col&quot;&amp;gt;수량&amp;lt;/th&amp;gt;
            &amp;lt;th scope=&quot;col&quot;&amp;gt;평가금액&amp;lt;/th&amp;gt;
        &amp;lt;/tr&amp;gt;
    &amp;lt;/thead&amp;gt;
    &amp;lt;tbody id=&quot;trade-history&quot;&amp;gt;
        &amp;lt;tr&amp;gt;
            &amp;lt;th scope=&quot;row&quot;&amp;gt;2022-11-17 12:00:00&amp;lt;/th&amp;gt;
            &amp;lt;td&amp;gt;삼성전자&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;매도&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;10,000&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;20,000&amp;lt;/td&amp;gt;
        &amp;lt;/tr&amp;gt;
    &amp;lt;/tbody&amp;gt;
&amp;lt;/table&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;사용자 입력 구현하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 입력해야하는 항목은 아래와 같습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;거래 날짜와 시간 (datetime-local)&lt;/li&gt;
&lt;li&gt;거래 종목 (select box)&lt;/li&gt;
&lt;li&gt;평단가 (매수 평균가격, 매도 평균가격) (text)&lt;/li&gt;
&lt;li&gt;거래 수량 (text)&lt;/li&gt;
&lt;li&gt;매수 또는 매도 (버튼)&lt;/li&gt;
&lt;/ol&gt;
&lt;pre id=&quot;code_1712219044620&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;input type=&quot;datetime-local&quot; id=&quot;datetime&quot; /&amp;gt;

&amp;lt;select id=&quot;event&quot;&amp;gt;
    &amp;lt;option value=&quot;삼성전자&quot;&amp;gt;삼성전자&amp;lt;/option&amp;gt;
    &amp;lt;option value=&quot;아마존&quot;&amp;gt;아마존&amp;lt;/option&amp;gt;
    &amp;lt;option value=&quot;애플&quot;&amp;gt;애플&amp;lt;/option&amp;gt;
&amp;lt;/select&amp;gt;

&amp;lt;input type=&quot;text&quot; id=&quot;price&quot; placeholder=&quot;평단가&quot; /&amp;gt;
&amp;lt;input type=&quot;text&quot; id=&quot;amount&quot; placeholder=&quot;수량&quot; /&amp;gt;

&amp;lt;button type=&quot;button&quot; id=&quot;buy&quot;&amp;gt;매수&amp;lt;/button&amp;gt;
&amp;lt;button type=&quot;button&quot; id=&quot;sell&quot;&amp;gt;매도&amp;lt;/button&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 코드&lt;/p&gt;
&lt;pre id=&quot;code_1712219066474&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&amp;gt;
    &amp;lt;title&amp;gt;주식투자 포트폴리오&amp;lt;/title&amp;gt;
    &amp;lt;link href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;main class=&quot;container&quot;&amp;gt;
        &amp;lt;h1&amp;gt;주식투자 포트폴리오&amp;lt;/h1&amp;gt;

        &amp;lt;div&amp;gt;총 보유자산 &amp;lt;span id=&quot;total&quot;&amp;gt;0&amp;lt;/span&amp;gt; 원&amp;lt;/div&amp;gt;

        &amp;lt;div&amp;gt;총 보유현금 &amp;lt;span id=&quot;cash&quot;&amp;gt;0&amp;lt;/span&amp;gt; 원&amp;lt;/div&amp;gt;

        &amp;lt;div&amp;gt;총 보유주식 &amp;lt;span id=&quot;stocks-price&quot;&amp;gt;0&amp;lt;/span&amp;gt; 원&amp;lt;/div&amp;gt;

        &amp;lt;div&amp;gt;평가손익 &amp;lt;span id=&quot;profit&quot;&amp;gt;0&amp;lt;/span&amp;gt; 원&amp;lt;/div&amp;gt;

        &amp;lt;div&amp;gt;수익률 &amp;lt;span id=&quot;percentage&quot;&amp;gt;0&amp;lt;/span&amp;gt; %&amp;lt;/div&amp;gt;

        &amp;lt;table class=&quot;table table-striped table-hover&quot;&amp;gt;
            &amp;lt;thead&amp;gt;
                &amp;lt;tr&amp;gt;
                    &amp;lt;th scope=&quot;col&quot;&amp;gt;시간&amp;lt;/th&amp;gt;
                    &amp;lt;th scope=&quot;col&quot;&amp;gt;종목&amp;lt;/th&amp;gt;
                    &amp;lt;th scope=&quot;col&quot;&amp;gt;거래&amp;lt;/th&amp;gt;
                    &amp;lt;th scope=&quot;col&quot;&amp;gt;평단가&amp;lt;/th&amp;gt;
                    &amp;lt;th scope=&quot;col&quot;&amp;gt;수량&amp;lt;/th&amp;gt;
                    &amp;lt;th scope=&quot;col&quot;&amp;gt;평가금액&amp;lt;/th&amp;gt;
                &amp;lt;/tr&amp;gt;
            &amp;lt;/thead&amp;gt;
            &amp;lt;tbody id=&quot;trade-history&quot;&amp;gt;
                &amp;lt;tr&amp;gt;
                    &amp;lt;th scope=&quot;row&quot;&amp;gt;2022-11-17 12:00:00&amp;lt;/th&amp;gt;
                    &amp;lt;td&amp;gt;삼성전자&amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;매도&amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;10,000&amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;20,000&amp;lt;/td&amp;gt;
                &amp;lt;/tr&amp;gt;
            &amp;lt;/tbody&amp;gt;
        &amp;lt;/table&amp;gt;

        &amp;lt;input type=&quot;datetime-local&quot; id=&quot;datetime&quot; /&amp;gt;

        &amp;lt;select id=&quot;event&quot;&amp;gt;
            &amp;lt;option value=&quot;삼성전자&quot;&amp;gt;삼성전자&amp;lt;/option&amp;gt;
            &amp;lt;option value=&quot;아마존&quot;&amp;gt;아마존&amp;lt;/option&amp;gt;
            &amp;lt;option value=&quot;애플&quot;&amp;gt;애플&amp;lt;/option&amp;gt;
        &amp;lt;/select&amp;gt;

        &amp;lt;input type=&quot;text&quot; id=&quot;price&quot; placeholder=&quot;평단가&quot; /&amp;gt;
        &amp;lt;input type=&quot;text&quot; id=&quot;amount&quot; placeholder=&quot;수량&quot; /&amp;gt;

        &amp;lt;button type=&quot;button&quot; id=&quot;buy&quot;&amp;gt;매수&amp;lt;/button&amp;gt;
        &amp;lt;button type=&quot;button&quot; id=&quot;sell&quot;&amp;gt;매도&amp;lt;/button&amp;gt;
    &amp;lt;/main&amp;gt;

    &amp;lt;script src=&quot;https://code.jquery.com/jquery-3.6.1.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;script.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5-4. 포트폴리오 로직 만들기 1&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;초기 변수 지정하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 전역적으로 자주 사용할 변수들을 정의합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;initCash(최초 현금 보유량): 사용자가 최초 100만원의 현금으로 투자를 시작한다고 가정&lt;/li&gt;
&lt;li&gt;initStocks(최초 주식 보유량): 사용자가 보유한 주식은 0개라고 가정&lt;/li&gt;
&lt;li&gt;stocks(총 주식 보유량): 사용자가 현재 보유하고 있는 주식 수. initStock과 같은 형태를 가진다.&lt;/li&gt;
&lt;li&gt;cash(총 현금 보유량): 사용자가 현재 보유한 현금&lt;/li&gt;
&lt;li&gt;stocksPrice(총 보유주식 평가금액): 사용자가 보유한 주식을 현금 가치로 환산한 값&lt;/li&gt;
&lt;li&gt;total(총 보유자산): 사용자가 보유한 현금과 사용자가 보유한 주식의 현금 가치의 합&lt;/li&gt;
&lt;li&gt;tradeHistory(거래 기록): 사용자가 거래한 기록을 표 형태로 표시&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1712219095545&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var initCash = 1000000; // 최초 현금 보유량
var initStocks = {
    &quot;삼성전자&quot;: {
        price: 0,
        amount: 0
    },
    &quot;아마존&quot;: {
        price: 0,
        amount: 0
    },
    &quot;애플&quot;: {
        price: 0,
        amount: 0
    },
}; // 최초 주식 보유량

var stocks; // 총 주식 보유량
var cash; // 총 현금 보유량
var stocksPrice; // 총 보유주식 평가금액
var total; // 총 보유자산 (현금 + 주식)
var tradeHistory; //&amp;nbsp;거래 기록&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;자주 사용할 함수 정의&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;앞으로 자주 사용할 코드를 함수로 작성하여 사용하기 간편하게 묶어주겠습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;getStocksPrice() - 총 보유주식 평가금액을 계산하는 함수 (아래 두 방법 중 하나 선택)&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;a. for 구문을 사용하지 않은 경우&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1712219123271&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function getStocksPrice() {
		stocksPrice =
		    stocks[&quot;삼성전자&quot;][&quot;price&quot;] * stocks[&quot;삼성전자&quot;][&quot;amount&quot;]
		    + stocks[&quot;아마존&quot;][&quot;price&quot;] * stocks[&quot;아마존&quot;][&quot;amount&quot;]
		    + stocks[&quot;애플&quot;][&quot;price&quot;] * stocks[&quot;애플&quot;][&quot;amount&quot;];
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;b. for 구문을 사용한 경우&lt;/p&gt;
&lt;pre id=&quot;code_1712219208597&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function getStocksPrice() {
    stocksPrice = 0;

    for (var event in stocks) {
        var stock = stocks[event];

        stocksPrice = stocksPrice + stock[&quot;price&quot;] * stock[&quot;amount&quot;];
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2.setStock(event, price, amount) - 거래가 발생하면 주식 평단가와 보유수량을 변경하여 딕셔너리와 로컬스토리지에 저장하는 함수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  로컬스토리지에는 문자열(string)만 저장할 수 있기 때문에 JSON.stringify() 함수를 사용하여 딕셔너리를 문자열로 변환합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712219282667&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function setStock(event, price, amount) {
    var stock = stocks[event];

    stocks[event] = {
        price: price,
        amount: amount + stock[&quot;amount&quot;]
    }

    localStorage.setItem(&quot;stocks&quot;, JSON.stringify(stocks));
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. showResult() - 현황판에 표시되는 값을 표시하는 함수&lt;/p&gt;
&lt;pre id=&quot;code_1712219343086&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function showResult() {
    total = cash + stocksPrice;

    var profit = total - initCash;
    var percentage = profit / initCash * 100;

    percentage = Math.round(percentage);

    $(&quot;#total&quot;).html(total.toLocaleString());
    $(&quot;#cash&quot;).html(cash.toLocaleString());
    $(&quot;#stocks-price&quot;).html(stocksPrice.toLocaleString());
    $(&quot;#profit&quot;).html(profit.toLocaleString());
    $(&quot;#percentage&quot;).html(percentage);
    $(&quot;#trade-history&quot;).html(tradeHistory);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5-5. 포트폴리오 로직 만들기 2&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;로컬스토리지에 저장된 값 불러오기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 로컬스토리지에 아래의 값을 저장하여 사용하려고 합니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;stocks: 사용자가 보유한 주식 수&lt;/li&gt;
&lt;li&gt;cash: 사용자가 보유한 현금&lt;/li&gt;
&lt;li&gt;tradeHistory: 사용자의 거래 기록 (표 형태)&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미 값들이 로컬스토리지에 저장되어 있다면 저장된 값을 사용하고 저장된 값이 없다면 초기값을 사용하도록 코드를 작성합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  stocks 딕셔너리를 로컬스토리지에 저장할 때 JSON.stringify()를 사용하여 문자열로 저장했습니다. 저장된 값을 불러오면 문자열 값으로 불러오기 때문에 문자열을 다시 딕셔너리로 변경하기 위해 JSON.parse() 함수를 사용합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;JSON.stringify(): 딕셔너리 &amp;rarr; 문자열&lt;/li&gt;
&lt;li&gt;JSON.parse(): 문자열 &amp;rarr; 딕셔너리&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1712219403190&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$(document).ready(function() {
    stocks = JSON.parse(localStorage.getItem(&quot;stocks&quot;));

    if (stocks == null) {
        stocks = initStocks;
    }

    cash = localStorage.getItem(&quot;cash&quot;);

    if (cash == null) {
        cash = initCash;
    }

    cash = parseFloat(cash);

    tradeHistory = localStorage.getItem(&quot;tradeHistory&quot;);

    if (tradeHistory == null) {
        tradeHistory = &quot;&quot;;
    }
});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;현황판 보여주기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 작성한 함수를 사용하여 총 보유주식 평가금액을 계산하고 현황판에 결과를 표시합니다. 아직 거래가 없어 0으로 표시될 거에요.&lt;/p&gt;
&lt;pre id=&quot;code_1712219454308&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;getStocksPrice();
showResult();&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;버튼 클릭 함수 연결하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매수, 매도 버튼을 누르면 실행할 함수를 만들고 연결합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712219474349&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$(&quot;#buy&quot;).click(buyHandler);
$(&quot;#sell&quot;).click(sellHandler);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;[매수] 사용자 입력값 받아오기&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;datetime: 날짜와 시간&lt;/li&gt;
&lt;li&gt;event: 종목&lt;/li&gt;
&lt;li&gt;price: 평단가&lt;/li&gt;
&lt;li&gt;amount: 수량&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1712219523600&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function buyHandler() {
		var datetime = $(&quot;#datetime&quot;).val();
    var event = $(&quot;#event&quot;).val();
    var price = $(&quot;#price&quot;).val();
    var amount = $(&quot;#amount&quot;).val();

    price = parseFloat(price);
    amount = parseFloat(amount);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;[매수] 보유 현금 업데이트하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 구매한 주식의 총 가격은 평단가(price) * 수량(amount) 입니다. 사용자가 가진 현금에서 매수한 가격만큼 빼서 cash에 저장합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712219538803&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var buyPrice = price * amount;

cash = cash - buyPrice;

localStorage.setItem(&quot;cash&quot;, cash);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;[매수] 거래 기록 업데이트하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;거래 기록은 표 형태로 나타내야하기 때문에 아래와 같이 백틱을 사용해서 tr 태그 안쪽을 작성합니다. 과거 기록을 누적시키기 위해 tradeHistory를 더해주는 것도 잊지말구요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 거래 기록 또한 로컬스토리지에 저장합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712219558549&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;tradeHistory = `&amp;lt;tr&amp;gt;
    &amp;lt;th scope=&quot;row&quot;&amp;gt;${datetime}&amp;lt;/th&amp;gt;
    &amp;lt;td&amp;gt;${event}&amp;lt;/td&amp;gt;
    &amp;lt;td&amp;gt;매수&amp;lt;/td&amp;gt;
    &amp;lt;td&amp;gt;${price.toLocaleString()}&amp;lt;/td&amp;gt;
    &amp;lt;td&amp;gt;${amount}&amp;lt;/td&amp;gt;
    &amp;lt;td&amp;gt;${buyPrice.toLocaleString()}&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;` + tradeHistory;

localStorage.setItem(&quot;tradeHistory&quot;, tradeHistory);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;[매수] 주식 보유량 업데이트하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 매수한 종목, 평단가, 수량을 setStock() 함수에 넘겨 평단가와 보유 수량을 업데이트합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712219589375&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;setStock(event, price, amount);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;[매수] 현황판 업데이트하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현금, 주식보유수에 따라 현황판도 함께 업데이트합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712219632462&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;getStocksPrice();
showResult();&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;[매도] 사용자 입력값 받아오기&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;datetime: 날짜와 시간&lt;/li&gt;
&lt;li&gt;event: 종목&lt;/li&gt;
&lt;li&gt;price: 평단가&lt;/li&gt;
&lt;li&gt;amount: 수량&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1712219687873&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var datetime = $(&quot;#datetime&quot;).val();
var event = $(&quot;#event&quot;).val();
var price = $(&quot;#price&quot;).val();
var amount = $(&quot;#amount&quot;).val();

price = parseFloat(price);
amount = parseFloat(amount);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;[매도] 보유 현금 업데이트하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 판매한 주식의 총 가격은 평단가(price) * 수량(amount) 입니다. 사용자가 가진 현금에서 매도한 가격만큼 더해서 cash에 저장합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712219719252&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var sellPrice = price * amount;

cash = cash + sellPrice;

localStorage.setItem(&quot;cash&quot;, cash);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;[매도] 거래 기록 업데이트하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매수때와 거의 동일한 코드를 사용합니다. 매수 &amp;rarr; 매도, buyPrice &amp;rarr; sellPrice 로 변경합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712219745292&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;tradeHistory = `&amp;lt;tr&amp;gt;
    &amp;lt;th scope=&quot;row&quot;&amp;gt;${datetime}&amp;lt;/th&amp;gt;
    &amp;lt;td&amp;gt;${event}&amp;lt;/td&amp;gt;
    &amp;lt;td&amp;gt;매도&amp;lt;/td&amp;gt;
    &amp;lt;td&amp;gt;${price.toLocaleString()}&amp;lt;/td&amp;gt;
    &amp;lt;td&amp;gt;${amount}&amp;lt;/td&amp;gt;
    &amp;lt;td&amp;gt;${sellPrice.toLocaleString()}&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;` + tradeHistory;

localStorage.setItem(&quot;tradeHistory&quot;, tradeHistory);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;[매도] 주식 보유량 업데이트하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 매도한 종목, 평단가, 수량을 setStock() 함수에 넘겨 평단가와 보유 수량을 업데이트합니다. 매도와 달리 수량에 -1을 곱해 음수로 만들어주어 판매한 만큼 수량을 차감합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712219789827&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;setStock(event, price, -1 * amount)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;[매도] 현황판 업데이트하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현금, 주식보유수에 따라 현황판도 함께 업데이트합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712219849885&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;getStocksPrice();
showResult();&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;703&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UDI1m/btsGlY2mtaQ/D6MZPndM5rosHRHv3MhPl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UDI1m/btsGlY2mtaQ/D6MZPndM5rosHRHv3MhPl0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UDI1m/btsGlY2mtaQ/D6MZPndM5rosHRHv3MhPl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUDI1m%2FbtsGlY2mtaQ%2FD6MZPndM5rosHRHv3MhPl0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;703&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;703&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 코드&lt;/p&gt;
&lt;pre id=&quot;code_1712220012679&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&amp;gt;
    &amp;lt;title&amp;gt;주식투자 포트폴리오&amp;lt;/title&amp;gt;
    &amp;lt;link href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;main class=&quot;container&quot;&amp;gt;
        &amp;lt;h1&amp;gt;주식투자 포트폴리오&amp;lt;/h1&amp;gt;

        &amp;lt;div&amp;gt;총 보유자산 &amp;lt;span id=&quot;total&quot;&amp;gt;0&amp;lt;/span&amp;gt; 원&amp;lt;/div&amp;gt;

        &amp;lt;div&amp;gt;총 보유현금 &amp;lt;span id=&quot;cash&quot;&amp;gt;0&amp;lt;/span&amp;gt; 원&amp;lt;/div&amp;gt;

        &amp;lt;div&amp;gt;총 보유주식 &amp;lt;span id=&quot;stocks-price&quot;&amp;gt;0&amp;lt;/span&amp;gt; 원&amp;lt;/div&amp;gt;

        &amp;lt;div&amp;gt;평가손익 &amp;lt;span id=&quot;profit&quot;&amp;gt;0&amp;lt;/span&amp;gt; 원&amp;lt;/div&amp;gt;

        &amp;lt;div&amp;gt;수익률 &amp;lt;span id=&quot;percentage&quot;&amp;gt;0&amp;lt;/span&amp;gt; %&amp;lt;/div&amp;gt;

        &amp;lt;table class=&quot;table table-striped table-hover&quot;&amp;gt;
            &amp;lt;thead&amp;gt;
                &amp;lt;tr&amp;gt;
                    &amp;lt;th scope=&quot;col&quot;&amp;gt;시간&amp;lt;/th&amp;gt;
                    &amp;lt;th scope=&quot;col&quot;&amp;gt;종목&amp;lt;/th&amp;gt;
                    &amp;lt;th scope=&quot;col&quot;&amp;gt;거래&amp;lt;/th&amp;gt;
                    &amp;lt;th scope=&quot;col&quot;&amp;gt;평단가&amp;lt;/th&amp;gt;
                    &amp;lt;th scope=&quot;col&quot;&amp;gt;수량&amp;lt;/th&amp;gt;
                    &amp;lt;th scope=&quot;col&quot;&amp;gt;평가금액&amp;lt;/th&amp;gt;
                &amp;lt;/tr&amp;gt;
            &amp;lt;/thead&amp;gt;
            &amp;lt;tbody id=&quot;trade-history&quot;&amp;gt;
                &amp;lt;tr&amp;gt;
                    &amp;lt;th scope=&quot;row&quot;&amp;gt;2022-11-17 12:00:00&amp;lt;/th&amp;gt;
                    &amp;lt;td&amp;gt;삼성전자&amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;매도&amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;10,000&amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;20,000&amp;lt;/td&amp;gt;
                &amp;lt;/tr&amp;gt;
            &amp;lt;/tbody&amp;gt;
        &amp;lt;/table&amp;gt;

        &amp;lt;input type=&quot;datetime-local&quot; id=&quot;datetime&quot; /&amp;gt;

        &amp;lt;select id=&quot;event&quot;&amp;gt;
            &amp;lt;option value=&quot;삼성전자&quot;&amp;gt;삼성전자&amp;lt;/option&amp;gt;
            &amp;lt;option value=&quot;아마존&quot;&amp;gt;아마존&amp;lt;/option&amp;gt;
            &amp;lt;option value=&quot;애플&quot;&amp;gt;애플&amp;lt;/option&amp;gt;
        &amp;lt;/select&amp;gt;

        &amp;lt;input type=&quot;text&quot; id=&quot;price&quot; placeholder=&quot;평단가&quot; /&amp;gt;
        &amp;lt;input type=&quot;text&quot; id=&quot;amount&quot; placeholder=&quot;수량&quot; /&amp;gt;

        &amp;lt;button type=&quot;button&quot; id=&quot;buy&quot;&amp;gt;매수&amp;lt;/button&amp;gt;
        &amp;lt;button type=&quot;button&quot; id=&quot;sell&quot;&amp;gt;매도&amp;lt;/button&amp;gt;
    &amp;lt;/main&amp;gt;

    &amp;lt;script src=&quot;https://code.jquery.com/jquery-3.6.1.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;script.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1712220056411&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var initCash = 1000000; // 최초 현금 보유량
var initStocks = {
    &quot;삼성전자&quot;: {
        price: 0,
        amount: 0
    },
    &quot;아마존&quot;: {
        price: 0,
        amount: 0
    },
    &quot;애플&quot;: {
        price: 0,
        amount: 0
    },
}; // 최초 주식 보유량

var stocks; // 총 주식 보유량
var cash; // 총 현금 보유량
var stocksPrice; // 총 보유주식 평가금액
var total; // 총 보유자산 (현금 + 주식)
var tradeHistory; //&amp;nbsp;거래 기록

function getStocksPrice() {
    stocksPrice = 0;

    for (var event in stocks) {
        var stock = stocks[event];

        stocksPrice = stocksPrice + stock[&quot;price&quot;] * stock[&quot;amount&quot;];
    }
}

function setStock(event, price, amount) {
    var stock = stocks[event];

    stocks[event] = {
        price: price,
        amount: amount + stock[&quot;amount&quot;]
    }

    localStorage.setItem(&quot;stocks&quot;, JSON.stringify(stocks));
}

function showResult() {
    total = cash + stocksPrice;

    var profit = total - initCash;
    var percentage = profit / initCash * 100;

    percentage = Math.round(percentage);

    $(&quot;#total&quot;).html(total.toLocaleString());
    $(&quot;#cash&quot;).html(cash.toLocaleString());
    $(&quot;#stocks-price&quot;).html(stocksPrice.toLocaleString());
    $(&quot;#profit&quot;).html(profit.toLocaleString());
    $(&quot;#percentage&quot;).html(percentage);
    $(&quot;#trade-history&quot;).html(tradeHistory);
}

function buyHandler() {
    var datetime = $(&quot;#datetime&quot;).val();
    var event = $(&quot;#event&quot;).val();
    var price = $(&quot;#price&quot;).val();
    var amount = $(&quot;#amount&quot;).val();

    price = parseFloat(price);
    amount = parseFloat(amount);

    var buyPrice = price * amount;

    cash = cash - buyPrice;

    localStorage.setItem(&quot;cash&quot;, cash);

    tradeHistory = `&amp;lt;tr&amp;gt;
        &amp;lt;th scope=&quot;row&quot;&amp;gt;${datetime}&amp;lt;/th&amp;gt;
        &amp;lt;td&amp;gt;${event}&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;매수&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;${price.toLocaleString()}&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;${amount}&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;${buyPrice.toLocaleString()}&amp;lt;/td&amp;gt;
    &amp;lt;/tr&amp;gt;` + tradeHistory;

    localStorage.setItem(&quot;tradeHistory&quot;, tradeHistory);

    setStock(event, price, amount);
    getStocksPrice();
    showResult();
}

function sellHandler() {
    var datetime = $(&quot;#datetime&quot;).val();
    var event = $(&quot;#event&quot;).val();
    var price = $(&quot;#price&quot;).val();
    var amount = $(&quot;#amount&quot;).val();

    price = parseFloat(price);
    amount = parseFloat(amount);

    var sellPrice = price * amount;

    cash = cash + sellPrice;

    localStorage.setItem(&quot;cash&quot;, cash);

    tradeHistory = `&amp;lt;tr&amp;gt;
        &amp;lt;th scope=&quot;row&quot;&amp;gt;${datetime}&amp;lt;/th&amp;gt;
        &amp;lt;td&amp;gt;${event}&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;매도&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;${price.toLocaleString()}&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;${amount}&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;${sellPrice.toLocaleString()}&amp;lt;/td&amp;gt;
    &amp;lt;/tr&amp;gt;` + tradeHistory;

    localStorage.setItem(&quot;tradeHistory&quot;, tradeHistory);

    setStock(event, price, -1 * amount)
    getStocksPrice();
    showResult();
}

$(document).ready(function() {
    stocks = JSON.parse(localStorage.getItem(&quot;stocks&quot;));

    if (stocks == null) {
        stocks = initStocks;
    }

    cash = localStorage.getItem(&quot;cash&quot;);

    if (cash == null) {
        cash = initCash;
    }

    cash = parseFloat(cash);

    tradeHistory = localStorage.getItem(&quot;tradeHistory&quot;);

    if (tradeHistory == null) {
        tradeHistory = &quot;&quot;;
    }

    getStocksPrice();
    showResult();

    $(&quot;#buy&quot;).click(buyHandler);
    $(&quot;#sell&quot;).click(sellHandler);
});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;사용자 입력 꾸미기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Input group 문서: &lt;a href=&quot;https://getbootstrap.com/docs/5.2/forms/input-group/&quot;&gt;https://getbootstrap.com/docs/5.2/forms/input-group/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712220200560&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Input group&quot; data-og-description=&quot;Easily extend form controls by adding text, buttons, or button groups on either side of textual inputs, custom selects, and custom file inputs.&quot; data-og-host=&quot;getbootstrap.com&quot; data-og-source-url=&quot;https://getbootstrap.com/docs/5.2/forms/input-group/&quot; data-og-url=&quot;https://getbootstrap.com/docs/5.2/forms/input-group/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/boBxrv/hyVJ3zyuwX/MsCXpsGCkKqYh5Ftc2KZK1/img.png?width=2000&amp;amp;height=1000&amp;amp;face=0_0_2000_1000&quot;&gt;&lt;a href=&quot;https://getbootstrap.com/docs/5.2/forms/input-group/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://getbootstrap.com/docs/5.2/forms/input-group/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/boBxrv/hyVJ3zyuwX/MsCXpsGCkKqYh5Ftc2KZK1/img.png?width=2000&amp;amp;height=1000&amp;amp;face=0_0_2000_1000');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Input group&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Easily extend form controls by adding text, buttons, or button groups on either side of textual inputs, custom selects, and custom file inputs.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;getbootstrap.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1712220209433&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;input-group&quot;&amp;gt;
    &amp;lt;input type=&quot;datetime-local&quot; id=&quot;datetime&quot; class=&quot;form-control&quot; /&amp;gt;

    &amp;lt;select id=&quot;event&quot; class=&quot;form-select&quot;&amp;gt;
        &amp;lt;option value=&quot;삼성전자&quot;&amp;gt;삼성전자&amp;lt;/option&amp;gt;
        &amp;lt;option value=&quot;아마존&quot;&amp;gt;아마존&amp;lt;/option&amp;gt;
        &amp;lt;option value=&quot;애플&quot;&amp;gt;애플&amp;lt;/option&amp;gt;
    &amp;lt;/select&amp;gt;

    &amp;lt;input type=&quot;text&quot; id=&quot;price&quot; placeholder=&quot;평단가&quot; class=&quot;form-control&quot; /&amp;gt;
    &amp;lt;input type=&quot;text&quot; id=&quot;amount&quot; placeholder=&quot;수량&quot; class=&quot;form-control&quot; /&amp;gt;

    &amp;lt;button type=&quot;button&quot; id=&quot;buy&quot; class=&quot;btn btn-success&quot;&amp;gt;매수&amp;lt;/button&amp;gt;
    &amp;lt;button type=&quot;button&quot; id=&quot;sell&quot; class=&quot;btn btn-danger&quot;&amp;gt;매도&amp;lt;/button&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1088&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQ5HLK/btsGnY0YfKW/YIVz7LfpJ8vhvaSi1z1CV0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQ5HLK/btsGnY0YfKW/YIVz7LfpJ8vhvaSi1z1CV0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQ5HLK/btsGnY0YfKW/YIVz7LfpJ8vhvaSi1z1CV0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQ5HLK%2FbtsGnY0YfKW%2FYIVz7LfpJ8vhvaSi1z1CV0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1088&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1088&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 코드&lt;/p&gt;
&lt;pre id=&quot;code_1712220249316&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&amp;gt;
    &amp;lt;title&amp;gt;주식투자 포트폴리오&amp;lt;/title&amp;gt;
    &amp;lt;link href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;main class=&quot;container&quot;&amp;gt;
        &amp;lt;h1&amp;gt;주식투자 포트폴리오&amp;lt;/h1&amp;gt;

        &amp;lt;ul class=&quot;list-group&quot;&amp;gt;
            &amp;lt;li class=&quot;list-group-item&quot;&amp;gt;총 보유자산 &amp;lt;b id=&quot;total&quot;&amp;gt;0&amp;lt;/b&amp;gt; 원&amp;lt;/li&amp;gt;
            &amp;lt;li class=&quot;list-group-item&quot;&amp;gt;총 보유현금 &amp;lt;b id=&quot;cash&quot;&amp;gt;0&amp;lt;/b&amp;gt; 원&amp;lt;/li&amp;gt;
            &amp;lt;li class=&quot;list-group-item&quot;&amp;gt;총 보유주식 &amp;lt;b id=&quot;stocks-price&quot;&amp;gt;0&amp;lt;/b&amp;gt; 원&amp;lt;/li&amp;gt;
            &amp;lt;li class=&quot;list-group-item&quot;&amp;gt;평가손익 &amp;lt;b id=&quot;profit&quot;&amp;gt;0&amp;lt;/b&amp;gt; 원&amp;lt;/li&amp;gt;
            &amp;lt;li class=&quot;list-group-item&quot;&amp;gt;수익률 &amp;lt;b id=&quot;percentage&quot;&amp;gt;0&amp;lt;/b&amp;gt; %&amp;lt;/li&amp;gt;
        &amp;lt;/ul&amp;gt;

        &amp;lt;table class=&quot;table table-striped table-hover&quot;&amp;gt;
            &amp;lt;thead&amp;gt;
                &amp;lt;tr&amp;gt;
                    &amp;lt;th scope=&quot;col&quot;&amp;gt;시간&amp;lt;/th&amp;gt;
                    &amp;lt;th scope=&quot;col&quot;&amp;gt;종목&amp;lt;/th&amp;gt;
                    &amp;lt;th scope=&quot;col&quot;&amp;gt;거래&amp;lt;/th&amp;gt;
                    &amp;lt;th scope=&quot;col&quot;&amp;gt;평단가&amp;lt;/th&amp;gt;
                    &amp;lt;th scope=&quot;col&quot;&amp;gt;수량&amp;lt;/th&amp;gt;
                    &amp;lt;th scope=&quot;col&quot;&amp;gt;평가금액&amp;lt;/th&amp;gt;
                &amp;lt;/tr&amp;gt;
            &amp;lt;/thead&amp;gt;
            &amp;lt;tbody id=&quot;trade-history&quot;&amp;gt;
                &amp;lt;tr&amp;gt;
                    &amp;lt;th scope=&quot;row&quot;&amp;gt;2022-11-17 12:00:00&amp;lt;/th&amp;gt;
                    &amp;lt;td&amp;gt;삼성전자&amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;매도&amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;10,000&amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;20,000&amp;lt;/td&amp;gt;
                &amp;lt;/tr&amp;gt;
            &amp;lt;/tbody&amp;gt;
        &amp;lt;/table&amp;gt;

        &amp;lt;div class=&quot;input-group&quot;&amp;gt;
            &amp;lt;input type=&quot;datetime-local&quot; id=&quot;datetime&quot; class=&quot;form-control&quot; /&amp;gt;

            &amp;lt;select id=&quot;event&quot; class=&quot;form-select&quot;&amp;gt;
                &amp;lt;option value=&quot;삼성전자&quot;&amp;gt;삼성전자&amp;lt;/option&amp;gt;
                &amp;lt;option value=&quot;아마존&quot;&amp;gt;아마존&amp;lt;/option&amp;gt;
                &amp;lt;option value=&quot;애플&quot;&amp;gt;애플&amp;lt;/option&amp;gt;
            &amp;lt;/select&amp;gt;

            &amp;lt;input type=&quot;text&quot; id=&quot;price&quot; placeholder=&quot;평단가&quot; class=&quot;form-control&quot; /&amp;gt;
            &amp;lt;input type=&quot;text&quot; id=&quot;amount&quot; placeholder=&quot;수량&quot; class=&quot;form-control&quot; /&amp;gt;

            &amp;lt;button type=&quot;button&quot; id=&quot;buy&quot; class=&quot;btn btn-success&quot;&amp;gt;매수&amp;lt;/button&amp;gt;
            &amp;lt;button type=&quot;button&quot; id=&quot;sell&quot; class=&quot;btn btn-danger&quot;&amp;gt;매도&amp;lt;/button&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/main&amp;gt;

    &amp;lt;script src=&quot;https://code.jquery.com/jquery-3.6.1.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;script.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5-7. 오픈소스 라이브러리 사용하기&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;날짜 라이브러리 사용하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;거의 완성했습니다. 날짜 부분이 읽기 힘들어 눈에 조금 거슬리네요. 이것을 오픈소스 라이브러리를 사용해서 예쁘게 고쳐주겠습니다. 구글에 &amp;ldquo;jquery timeago&amp;rdquo;라고 검색하여 라이브러리의 GitHub 페이지로 들어갑니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;882&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WlXst/btsGmus049p/AurGyxp9VzQ4gNsgmOMyzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WlXst/btsGmus049p/AurGyxp9VzQ4gNsgmOMyzK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WlXst/btsGmus049p/AurGyxp9VzQ4gNsgmOMyzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWlXst%2FbtsGmus049p%2FAurGyxp9VzQ4gNsgmOMyzK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;882&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;882&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;jquery.timeago.js 파일을 다운로드하고 part5&amp;nbsp;폴더에 복사합니다. 추가적으로 한국어를 적용하기 위해 locales/jquery.timeago.ko.js 파일도 함께 다운로드하고 part5 폴더에 복사합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;382&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFiT6t/btsGl1LpaCB/XkvySkCnPNjkLAZtRuspd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFiT6t/btsGl1LpaCB/XkvySkCnPNjkLAZtRuspd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFiT6t/btsGl1LpaCB/XkvySkCnPNjkLAZtRuspd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFiT6t%2FbtsGl1LpaCB%2FXkvySkCnPNjkLAZtRuspd0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;480&quot; height=&quot;382&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;382&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같이 index.html에 불러오는 코드를 작성합니다. (순서 중요!)&lt;/p&gt;
&lt;pre id=&quot;code_1712220585364&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;script src=&quot;https://code.jquery.com/jquery-3.6.1.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&quot;jquery.timeago.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&quot;jquery.timeago.ko.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&quot;script.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GitHub의 문서를 참고하여 buyHandler(), sellHandler() 안의 tradeHistory 변수에 들어가는 값을 아래와 같이 변경합니다&lt;/p&gt;
&lt;pre id=&quot;code_1712220646024&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;tradeHistory = `&amp;lt;tr&amp;gt;
    &amp;lt;th scope=&quot;row&quot;&amp;gt;
        &amp;lt;time class=&quot;timeago&quot; datetime=&quot;${datetime}&quot;&amp;gt;${datetime}&amp;lt;/time&amp;gt;
    &amp;lt;/th&amp;gt;
    &amp;lt;td&amp;gt;${event}&amp;lt;/td&amp;gt;
    &amp;lt;td&amp;gt;매수&amp;lt;/td&amp;gt;
    &amp;lt;td&amp;gt;${price.toLocaleString()}&amp;lt;/td&amp;gt;
    &amp;lt;td&amp;gt;${amount}&amp;lt;/td&amp;gt;
    &amp;lt;td&amp;gt;${buyPrice.toLocaleString()}&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;` + tradeHistory;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;showResult() 함수 마지막에 다음 코드를 추가합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712220713028&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$('time.timeago').timeago();&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;491&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JISOb/btsGl3JflNL/v8Oeec2hKI9qLeGB7AbwF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JISOb/btsGl3JflNL/v8Oeec2hKI9qLeGB7AbwF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JISOb/btsGl3JflNL/v8Oeec2hKI9qLeGB7AbwF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJISOb%2FbtsGl3JflNL%2Fv8Oeec2hKI9qLeGB7AbwF0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;491&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;491&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시간 위에 마우스 커서를 올려 자세한 시간을 툴팁으로 볼 수 있습니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5-8. [심화] 오픈소스 라이브러리 사용하기&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;그래프 라이브러리 사용하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구글에 jquery graph 라고 검색하여 가장 상단에 나오는 jQuery Charts &amp;amp; Graphs | CanvasJS 글로 들어갑니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;623&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bM5a7u/btsGlUZ28S0/lS3WKpZP00FWeXD4qcTZw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bM5a7u/btsGlUZ28S0/lS3WKpZP00FWeXD4qcTZw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bM5a7u/btsGlUZ28S0/lS3WKpZP00FWeXD4qcTZw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbM5a7u%2FbtsGlUZ28S0%2FlS3WKpZP00FWeXD4qcTZw0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;623&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;623&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;canvasJS라는 라이브러리에서 제공하는 많은 그래프 차트 중 동그란 모양의 파이차트를 사용하여 주식 보유량을 표시해보겠습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;611&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGUzLT/btsGnwxaQok/b0c9tqAuJUJkl0ym997pk1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGUzLT/btsGnwxaQok/b0c9tqAuJUJkl0ym997pk1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGUzLT/btsGnwxaQok/b0c9tqAuJUJkl0ym997pk1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGUzLT%2FbtsGnwxaQok%2Fb0c9tqAuJUJkl0ym997pk1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;611&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;611&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클릭하여 들어가면 차트 미리보기와 샘플 코드를 제공합니다. 샘플 코드를 복사하여 script.js에 붙여넣기 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복사할 때는 var options = &amp;hellip; 부터 $(&quot;#chartContainer&quot;).CanvasJSChart(options); 까지 우리가 필요한 부분만 복사합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복사한 코드는 showResults() 함수의 가장 아래에 붙여넣기합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1038&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dsj4dA/btsGlxRyULL/FaWD465lzY5hYJZRSvoI6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dsj4dA/btsGlxRyULL/FaWD465lzY5hYJZRSvoI6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dsj4dA/btsGlxRyULL/FaWD465lzY5hYJZRSvoI6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdsj4dA%2FbtsGlxRyULL%2FFaWD465lzY5hYJZRSvoI6k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1038&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1038&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1712221912641&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var options = {
    title: {
        text: &quot;Desktop OS Market Share in 2017&quot;
    },
    subtitles: [{
        text: &quot;As of November, 2017&quot;
    }],
    animationEnabled: true,
    data: [{
        type: &quot;pie&quot;,
        startAngle: 40,
        toolTipContent: &quot;&amp;lt;b&amp;gt;{label}&amp;lt;/b&amp;gt;: {y}%&quot;,
        showInLegend: &quot;true&quot;,
        legendText: &quot;{label}&quot;,
        indexLabelFontSize: 16,
        indexLabel: &quot;{label} - {y}%&quot;,
        dataPoints: [
            { y: 48.36, label: &quot;Windows 7&quot; },
            { y: 26.85, label: &quot;Windows 10&quot; },
            { y: 1.49, label: &quot;Windows 8&quot; },
            { y: 6.98, label: &quot;Windows XP&quot; },
            { y: 6.53, label: &quot;Windows 8.1&quot; },
            { y: 2.45, label: &quot;Linux&quot; },
            { y: 3.32, label: &quot;Mac OS X 10.12&quot; },
            { y: 4.03, label: &quot;Others&quot; }
        ]
    }]
};

$(&quot;#chartContainer&quot;).CanvasJSChart(options);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드를 자세히 보시면 #chartContainer 에 차트를 넣게끔 되어있는데 id가 chartContainer인 div를 HTML에 추가하겠습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712221933819&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div id=&quot;chartContainer&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 차트를 사용하기 위한 핵심 라이브러리를 로드하는 코드를 추가합니다. jquery 아래 script.js 위에 추가합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712221964089&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;script src=&quot;https://code.jquery.com/jquery-3.6.1.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&quot;jquery.timeago.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&quot;jquery.timeago.ko.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&quot;https://canvasjs.com/assets/script/jquery.canvasjs.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&quot;script.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보기 좋게 HTML을 손 보겠습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712221987264&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;row&quot;&amp;gt;
    &amp;lt;div class=&quot;col&quot;&amp;gt;
        &amp;lt;ul class=&quot;list-group&quot;&amp;gt;
            &amp;lt;li class=&quot;list-group-item&quot;&amp;gt;총 보유자산 &amp;lt;b id=&quot;total&quot;&amp;gt;0&amp;lt;/b&amp;gt; 원&amp;lt;/li&amp;gt;
            &amp;lt;li class=&quot;list-group-item&quot;&amp;gt;총 보유현금 &amp;lt;b id=&quot;cash&quot;&amp;gt;0&amp;lt;/b&amp;gt; 원&amp;lt;/li&amp;gt;
            &amp;lt;li class=&quot;list-group-item&quot;&amp;gt;총 보유주식 &amp;lt;b id=&quot;stocks-price&quot;&amp;gt;0&amp;lt;/b&amp;gt; 원&amp;lt;/li&amp;gt;
            &amp;lt;li class=&quot;list-group-item&quot;&amp;gt;평가손익 &amp;lt;b id=&quot;profit&quot;&amp;gt;0&amp;lt;/b&amp;gt; 원&amp;lt;/li&amp;gt;
            &amp;lt;li class=&quot;list-group-item&quot;&amp;gt;수익률 &amp;lt;b id=&quot;percentage&quot;&amp;gt;0&amp;lt;/b&amp;gt; %&amp;lt;/li&amp;gt;
        &amp;lt;/ul&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div class=&quot;col&quot; style=&quot;height: 400px;&quot;&amp;gt;
        &amp;lt;div id=&quot;chartContainer&quot;&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 script.js 에서 쓸데없는 코드를 삭제하고 실제 보유 주식을 보여주기 위한 코드를 수정합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712222005069&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var options = {
    animationEnabled: true,
    data: [{
        type: &quot;pie&quot;,
        dataPoints: [
            { y: stocks[&quot;삼성전자&quot;][&quot;price&quot;] * stocks[&quot;삼성전자&quot;][&quot;amount&quot;], 
            label: &quot;삼성전자&quot; },
            { y: stocks[&quot;아마존&quot;][&quot;price&quot;] * stocks[&quot;아마존&quot;][&quot;amount&quot;], label: &quot;아마존&quot; },
            { y: stocks[&quot;애플&quot;][&quot;price&quot;] * stocks[&quot;애플&quot;][&quot;amount&quot;], label: &quot;애플&quot; },
        ]
    }]
};

$(&quot;#chartContainer&quot;).CanvasJSChart(options);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;836&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SLqJE/btsGlR3l2Bo/90gKQ1Y82A0Lvg5vAVYhak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SLqJE/btsGlR3l2Bo/90gKQ1Y82A0Lvg5vAVYhak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SLqJE/btsGlR3l2Bo/90gKQ1Y82A0Lvg5vAVYhak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSLqJE%2FbtsGlR3l2Bo%2F90gKQ1Y82A0Lvg5vAVYhak%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;836&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;836&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;거래목록 검색기능 구현하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;거래목록이 많아질 경우 보기 불편하니 검색기능 넣어보겠습니다. 구글에 &amp;ldquo;bootstrap jquery table filter&amp;rdquo; 라고 검색하여 들어갑니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Bootstrap&amp;nbsp;Filters (Advanced): &lt;a href=&quot;https://www.w3schools.com/bootstrap/bootstrap_filters.asp&quot;&gt;https://www.w3schools.com/bootstrap/bootstrap_filters.asp&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712222060375&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Bootstrap Filters&quot; data-og-description=&quot;W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.&quot; data-og-host=&quot;www.w3schools.com&quot; data-og-source-url=&quot;https://www.w3schools.com/bootstrap/bootstrap_filters.asp&quot; data-og-url=&quot;https://www.w3schools.com/bootstrap/bootstrap_filters.asp&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/gUKeZ/hyVJ2Hru7L/MaYKUt57pvdZXPctVveWK0/img.png?width=436&amp;amp;height=228&amp;amp;face=0_0_436_228,https://scrap.kakaocdn.net/dn/17uIO/hyVJ2Obyg8/0suhV9W7VsHSE7Cc7MZ4bK/img.png?width=300&amp;amp;height=300&amp;amp;face=0_0_300_300&quot;&gt;&lt;a href=&quot;https://www.w3schools.com/bootstrap/bootstrap_filters.asp&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.w3schools.com/bootstrap/bootstrap_filters.asp&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/gUKeZ/hyVJ2Hru7L/MaYKUt57pvdZXPctVveWK0/img.png?width=436&amp;amp;height=228&amp;amp;face=0_0_436_228,https://scrap.kakaocdn.net/dn/17uIO/hyVJ2Obyg8/0suhV9W7VsHSE7Cc7MZ4bK/img.png?width=300&amp;amp;height=300&amp;amp;face=0_0_300_300');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Bootstrap Filters&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.w3schools.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;776&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkfV5r/btsGmNeR1ov/f7yYXFdwWudDclH1movJf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkfV5r/btsGmNeR1ov/f7yYXFdwWudDclH1movJf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkfV5r/btsGmNeR1ov/f7yYXFdwWudDclH1movJf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkfV5r%2FbtsGmNeR1ov%2Ff7yYXFdwWudDclH1movJf0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;776&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;776&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 사이트에서 직접 기능을 체험해볼 수도 있고 코드도 제공합니다. 코드를 복사하여 script.js에 붙여넣기 합니다. 코드를 자세히 보면 고쳐야 할 부분이 두 가지 있습니다. 먼저 사용자의 검색어 입력을 받는 부분(텍스트박스도 새로 만들어야겠군요)과 테이블의 id를 수정해야합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;검색어 입력 id: myInput &amp;rarr; search&lt;/li&gt;
&lt;li&gt;테이블의 id: myTable &amp;rarr; trade-history&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1712222133618&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$(&quot;#search&quot;).on(&quot;keyup&quot;, function() {
    var value = $(this).val().toLowerCase();
    $(&quot;#trade-history tr&quot;).filter(function() {
        $(this).toggle($(this).text().toLowerCase().indexOf(value) &amp;gt; -1)
    });
});&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1712222165409&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;input type=&quot;text&quot; class=form-control id=&quot;search&quot; placeholder=&quot;검색&quot; /&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 간단하게 검색 기능을 만들 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;622&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nSnha/btsGmc0tQLU/6Mz78lrsEn1FpeKDGZJiR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nSnha/btsGmc0tQLU/6Mz78lrsEn1FpeKDGZJiR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nSnha/btsGmc0tQLU/6Mz78lrsEn1FpeKDGZJiR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnSnha%2FbtsGmc0tQLU%2F6Mz78lrsEn1FpeKDGZJiR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;622&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;622&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;410&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p9og5/btsGlTtmzIc/nqSNv2elE0aW7PX1Lmwjjk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p9og5/btsGlTtmzIc/nqSNv2elE0aW7PX1Lmwjjk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p9og5/btsGlTtmzIc/nqSNv2elE0aW7PX1Lmwjjk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp9og5%2FbtsGlTtmzIc%2FnqSNv2elE0aW7PX1Lmwjjk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;410&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;410&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5-9. 기타 기능 구현하기&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;금액, 수량 체크해서 알림주기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 포트폴리오가 거의 완성되었지만 아직 버그가 있습니다. 아래 두 가지 사항에 대해서요.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;매수 시 구입하려는 주식 금액이 보유한 현금보다 많을 때&lt;/li&gt;
&lt;li&gt;매도 시 보유한 주식 수량보다 판매하려는 주식 수량이 많을 때&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 두 경우에 대해서는 거래가 일어나지 않도록 예외처리를 해주어야 합니다. 그리고 사용자에게 돈이 부족하다고 알림도 줘야겠지요. 한 번 구현해봅시다.yHandler() 안에 다음과 같이 작성합니다.&lt;/p&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;if (buyPrice &amp;gt; cash) {
    console.log(&quot;보유한 현금이 부족합니다.&quot;);
    return false;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구입하려는 주식 금액(buyPrice)이 현금(cash)보다 많으면 개발자 콘솔에 &amp;ldquo;보유한 현금이 부족합니다.&amp;rdquo; 메시지를 띄우고 중단합니다. 그러나 사용자들은 개발자 콘솔을 모르기 떄문에 HTML로 보여주는게 좋겠죠? Bootstrap의 Alerts 문서를 참고하여 만들어봅시다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Alerts 문서: &lt;a href=&quot;https://getbootstrap.com/docs/5.2/components/alerts/&quot;&gt;https://getbootstrap.com/docs/5.2/components/alerts/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712222901827&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Alerts&quot; data-og-description=&quot;Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages.&quot; data-og-host=&quot;getbootstrap.com&quot; data-og-source-url=&quot;https://getbootstrap.com/docs/5.2/components/alerts/&quot; data-og-url=&quot;https://getbootstrap.com/docs/5.2/components/alerts/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/zsQCl/hyVJYrr4Wm/0Eehwoh8SDQVtbaZKaovN0/img.png?width=2000&amp;amp;height=1000&amp;amp;face=0_0_2000_1000&quot;&gt;&lt;a href=&quot;https://getbootstrap.com/docs/5.2/components/alerts/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://getbootstrap.com/docs/5.2/components/alerts/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/zsQCl/hyVJYrr4Wm/0Eehwoh8SDQVtbaZKaovN0/img.png?width=2000&amp;amp;height=1000&amp;amp;face=0_0_2000_1000');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Alerts&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Provide contextual feedback messages for typical user actions with the handful of available and flexible alert messages.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;getbootstrap.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt; style=&quot;display: none;&amp;rdquo; 을 입력하여 처음에 보이지 않도록 설정합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;alert alert-danger&quot; role=&quot;alert&quot; id=&quot;alert&quot; style=&quot;display: none;&quot;&amp;gt;
    A simple danger alert&amp;mdash;check it out!
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #ffffff; color: #37352f; text-align: start;&quot; data-block-id=&quot;7e28813b-c6b0-4e86-a0e5-8fc9e3033534&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div&gt;
&lt;div data-content-editable-leaf=&quot;true&quot;&gt;jQuery의 show(), hide() 함수를 사용하여 메시지를 보여주거나 숨길 수 있습니다.&lt;/div&gt;
&lt;div data-content-editable-leaf=&quot;true&quot;&gt;
&lt;pre id=&quot;code_1712222946631&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;if (buyPrice &amp;gt; cash) {
    $(&quot;#alert&quot;).html(&quot;보유한 현금이 부족합니다.&quot;);
    $(&quot;#alert&quot;).show();
    return false;
}

$(&quot;#alert&quot;).hide();&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;439&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SBJLD/btsGmVxbkIh/awXK4zlgh4X69dL5kaUYn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SBJLD/btsGmVxbkIh/awXK4zlgh4X69dL5kaUYn1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SBJLD/btsGmVxbkIh/awXK4zlgh4X69dL5kaUYn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSBJLD%2FbtsGmVxbkIh%2FawXK4zlgh4X69dL5kaUYn1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;439&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;439&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마찬가지로 2번의 경우(매도 시 보유한 주식 수량보다 판매하려는 주식 수량이 많을 때)도 예외처리를 해주죠.&lt;/p&gt;
&lt;pre id=&quot;code_1712222973219&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;if (amount &amp;gt; stocks[event][&quot;amount&quot;]) {
    $(&quot;#alert&quot;).html(&quot;보유한 수량보다 더 많은 수량을 매도할 수 없습니다.&quot;);
    $(&quot;#alert&quot;).show();
    return false;
}

$(&quot;#alert&quot;).hide();&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;394&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mNNYI/btsGmOLFdN0/SVdU4XqIFzklRkCQmxire0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mNNYI/btsGmOLFdN0/SVdU4XqIFzklRkCQmxire0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mNNYI/btsGmOLFdN0/SVdU4XqIFzklRkCQmxire0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmNNYI%2FbtsGmOLFdN0%2FSVdU4XqIFzklRkCQmxire0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;394&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;394&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;홈페이지와 연결하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 홈페이지(main.html)와 연결해봅시다. 이제 혼자서 할 수 있겠죠?&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;930&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cB7SWN/btsGmAGQK7v/kuOq3AwHWHtS6GMgEdoCbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cB7SWN/btsGmAGQK7v/kuOq3AwHWHtS6GMgEdoCbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cB7SWN/btsGmAGQK7v/kuOq3AwHWHtS6GMgEdoCbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcB7SWN%2FbtsGmAGQK7v%2FkuOq3AwHWHtS6GMgEdoCbK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;930&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;930&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 코드&lt;/p&gt;
&lt;pre id=&quot;code_1712223086797&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&amp;gt;
    &amp;lt;title&amp;gt;주식투자 포트폴리오&amp;lt;/title&amp;gt;
    &amp;lt;link href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;nav class=&quot;navbar navbar-expand-md navbar-dark fixed-top bg-dark&quot;&amp;gt;
        &amp;lt;div class=&quot;container-fluid&quot;&amp;gt;
            &amp;lt;a class=&quot;navbar-brand&quot; href=&quot;/main.html&quot;&amp;gt;빵형의 홈페이지&amp;lt;/a&amp;gt;
            &amp;lt;button class=&quot;navbar-toggler&quot; type=&quot;button&quot; data-bs-toggle=&quot;collapse&quot; data-bs-target=&quot;#navbarCollapse&quot; aria-controls=&quot;navbarCollapse&quot; aria-expanded=&quot;false&quot; aria-label=&quot;Toggle navigation&quot;&amp;gt;
                &amp;lt;span class=&quot;navbar-toggler-icon&quot;&amp;gt;&amp;lt;/span&amp;gt;
            &amp;lt;/button&amp;gt;
            &amp;lt;div class=&quot;collapse navbar-collapse&quot; id=&quot;navbarCollapse&quot;&amp;gt;
                &amp;lt;ul class=&quot;navbar-nav me-auto mb-2 mb-md-0&quot;&amp;gt;
                    &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
                        &amp;lt;a class=&quot;nav-link&quot; aria-current=&quot;page&quot; href=&quot;/main.html&quot;&amp;gt;홈&amp;lt;/a&amp;gt;
                    &amp;lt;/li&amp;gt;
                    &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
                        &amp;lt;a class=&quot;nav-link&quot; href=&quot;/part2/index.html&quot;&amp;gt;사칙연산 계산기&amp;lt;/a&amp;gt;
                    &amp;lt;/li&amp;gt;
                    &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
                        &amp;lt;a class=&quot;nav-link&quot; href=&quot;/part3/index.html&quot;&amp;gt;대출이자 계산기&amp;lt;/a&amp;gt;
                    &amp;lt;/li&amp;gt;
                    &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
                        &amp;lt;a class=&quot;nav-link&quot; href=&quot;/part4/index.html&quot;&amp;gt;일기장&amp;lt;/a&amp;gt;
                    &amp;lt;/li&amp;gt;
                    &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
                        &amp;lt;a class=&quot;nav-link active&quot; href=&quot;/part5/index.html&quot;&amp;gt;주식투자 포트폴리오&amp;lt;/a&amp;gt;
                    &amp;lt;/li&amp;gt;
                &amp;lt;/ul&amp;gt;
            &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/nav&amp;gt;

    &amp;lt;main class=&quot;container&quot;&amp;gt;
        &amp;lt;h1&amp;gt;주식투자 포트폴리오&amp;lt;/h1&amp;gt;

        &amp;lt;ul class=&quot;list-group&quot;&amp;gt;
            &amp;lt;li class=&quot;list-group-item&quot;&amp;gt;총 보유자산 &amp;lt;b id=&quot;total&quot;&amp;gt;0&amp;lt;/b&amp;gt; 원&amp;lt;/li&amp;gt;
            &amp;lt;li class=&quot;list-group-item&quot;&amp;gt;총 보유현금 &amp;lt;b id=&quot;cash&quot;&amp;gt;0&amp;lt;/b&amp;gt; 원&amp;lt;/li&amp;gt;
            &amp;lt;li class=&quot;list-group-item&quot;&amp;gt;총 보유주식 &amp;lt;b id=&quot;stocks-price&quot;&amp;gt;0&amp;lt;/b&amp;gt; 원&amp;lt;/li&amp;gt;
            &amp;lt;li class=&quot;list-group-item&quot;&amp;gt;평가손익 &amp;lt;b id=&quot;profit&quot;&amp;gt;0&amp;lt;/b&amp;gt; 원&amp;lt;/li&amp;gt;
            &amp;lt;li class=&quot;list-group-item&quot;&amp;gt;수익률 &amp;lt;b id=&quot;percentage&quot;&amp;gt;0&amp;lt;/b&amp;gt; %&amp;lt;/li&amp;gt;
        &amp;lt;/ul&amp;gt;

        &amp;lt;table class=&quot;table table-striped table-hover&quot;&amp;gt;
            &amp;lt;thead&amp;gt;
                &amp;lt;tr&amp;gt;
                    &amp;lt;th scope=&quot;col&quot;&amp;gt;시간&amp;lt;/th&amp;gt;
                    &amp;lt;th scope=&quot;col&quot;&amp;gt;종목&amp;lt;/th&amp;gt;
                    &amp;lt;th scope=&quot;col&quot;&amp;gt;거래&amp;lt;/th&amp;gt;
                    &amp;lt;th scope=&quot;col&quot;&amp;gt;평단가&amp;lt;/th&amp;gt;
                    &amp;lt;th scope=&quot;col&quot;&amp;gt;수량&amp;lt;/th&amp;gt;
                    &amp;lt;th scope=&quot;col&quot;&amp;gt;평가금액&amp;lt;/th&amp;gt;
                &amp;lt;/tr&amp;gt;
            &amp;lt;/thead&amp;gt;
            &amp;lt;tbody id=&quot;trade-history&quot;&amp;gt;
                &amp;lt;tr&amp;gt;
                    &amp;lt;th scope=&quot;row&quot;&amp;gt;2022-11-17 12:00:00&amp;lt;/th&amp;gt;
                    &amp;lt;td&amp;gt;삼성전자&amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;매도&amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;10,000&amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;2&amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;20,000&amp;lt;/td&amp;gt;
                &amp;lt;/tr&amp;gt;
            &amp;lt;/tbody&amp;gt;
        &amp;lt;/table&amp;gt;

        &amp;lt;div class=&quot;alert alert-danger&quot; role=&quot;alert&quot; id=&quot;alert&quot; style=&quot;display: none;&quot;&amp;gt;
            A simple danger alert&amp;mdash;check it out!
        &amp;lt;/div&amp;gt;

        &amp;lt;div class=&quot;input-group&quot;&amp;gt;
            &amp;lt;input type=&quot;datetime-local&quot; id=&quot;datetime&quot; class=&quot;form-control&quot; /&amp;gt;

            &amp;lt;select id=&quot;event&quot; class=&quot;form-select&quot;&amp;gt;
                &amp;lt;option value=&quot;삼성전자&quot;&amp;gt;삼성전자&amp;lt;/option&amp;gt;
                &amp;lt;option value=&quot;아마존&quot;&amp;gt;아마존&amp;lt;/option&amp;gt;
                &amp;lt;option value=&quot;애플&quot;&amp;gt;애플&amp;lt;/option&amp;gt;
            &amp;lt;/select&amp;gt;

            &amp;lt;input type=&quot;text&quot; id=&quot;price&quot; placeholder=&quot;평단가&quot; class=&quot;form-control&quot; /&amp;gt;
            &amp;lt;input type=&quot;text&quot; id=&quot;amount&quot; placeholder=&quot;수량&quot; class=&quot;form-control&quot; /&amp;gt;

            &amp;lt;button type=&quot;button&quot; id=&quot;buy&quot; class=&quot;btn btn-success&quot;&amp;gt;매수&amp;lt;/button&amp;gt;
            &amp;lt;button type=&quot;button&quot; id=&quot;sell&quot; class=&quot;btn btn-danger&quot;&amp;gt;매도&amp;lt;/button&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/main&amp;gt;

    &amp;lt;script src=&quot;https://code.jquery.com/jquery-3.6.1.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;jquery.timeago.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;jquery.timeago.ko.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;script.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;script.js&lt;/p&gt;
&lt;pre id=&quot;code_1712223477437&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var initCash = 1000000; // 최초 현금 보유량
var initStocks = {
    &quot;삼성전자&quot;: {
        price: 0,
        amount: 0
    },
    &quot;아마존&quot;: {
        price: 0,
        amount: 0
    },
    &quot;애플&quot;: {
        price: 0,
        amount: 0
    },
}; // 최초 주식 보유량

var stocks; // 총 주식 보유량
var cash; // 총 현금 보유량
var stocksPrice; // 총 보유주식 평가금액
var total; // 총 보유자산 (현금 + 주식)
var tradeHistory; //&amp;nbsp;거래 기록

function getStocksPrice() {
    stocksPrice = 0;

    for (var event in stocks) {
        var stock = stocks[event];

        stocksPrice = stocksPrice + stock[&quot;price&quot;] * stock[&quot;amount&quot;];
    }
}

function setStock(event, price, amount) {
    var stock = stocks[event];

    stocks[event] = {
        price: price,
        amount: amount + stock[&quot;amount&quot;]
    }

    localStorage.setItem(&quot;stocks&quot;, JSON.stringify(stocks));
}

function showResult() {
    total = cash + stocksPrice;

    var profit = total - initCash;
    var percentage = profit / initCash * 100;

    percentage = Math.round(percentage);

    $(&quot;#total&quot;).html(total.toLocaleString());
    $(&quot;#cash&quot;).html(cash.toLocaleString());
    $(&quot;#stocks-price&quot;).html(stocksPrice.toLocaleString());
    $(&quot;#profit&quot;).html(profit.toLocaleString());
    $(&quot;#percentage&quot;).html(percentage);
    $(&quot;#trade-history&quot;).html(tradeHistory);

    $('time.timeago').timeago();
}

function buyHandler() {
    var datetime = $(&quot;#datetime&quot;).val();
    var event = $(&quot;#event&quot;).val();
    var price = $(&quot;#price&quot;).val();
    var amount = $(&quot;#amount&quot;).val();

    price = parseFloat(price);
    amount = parseFloat(amount);

    var buyPrice = price * amount;

    if (buyPrice &amp;gt; cash) {
        $(&quot;#alert&quot;).html(&quot;보유한 현금이 부족합니다.&quot;);
        $(&quot;#alert&quot;).show();
        return false;
    }

    $(&quot;#alert&quot;).hide();

    cash = cash - buyPrice;

    localStorage.setItem(&quot;cash&quot;, cash);

    tradeHistory = `&amp;lt;tr&amp;gt;
        &amp;lt;th scope=&quot;row&quot;&amp;gt;
            &amp;lt;time class=&quot;timeago&quot; datetime=&quot;${datetime}&quot;&amp;gt;${datetime}&amp;lt;/time&amp;gt;
        &amp;lt;/th&amp;gt;
        &amp;lt;td&amp;gt;${event}&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;매수&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;${price.toLocaleString()}&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;${amount}&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;${buyPrice.toLocaleString()}&amp;lt;/td&amp;gt;
    &amp;lt;/tr&amp;gt;` + tradeHistory;

    localStorage.setItem(&quot;tradeHistory&quot;, tradeHistory);

    setStock(event, price, amount);
    getStocksPrice();
    showResult();
}

function sellHandler() {
    var datetime = $(&quot;#datetime&quot;).val();
    var event = $(&quot;#event&quot;).val();
    var price = $(&quot;#price&quot;).val();
    var amount = $(&quot;#amount&quot;).val();

    price = parseFloat(price);
    amount = parseFloat(amount);

    if (amount &amp;gt; stocks[event][&quot;amount&quot;]) {
        $(&quot;#alert&quot;).html(&quot;보유한 수량보다 더 많은 수량을 매도할 수 없습니다.&quot;);
        $(&quot;#alert&quot;).show();
        return false;
    }

    $(&quot;#alert&quot;).hide();

    var sellPrice = price * amount;

    cash = cash + sellPrice;

    localStorage.setItem(&quot;cash&quot;, cash);

    tradeHistory = `&amp;lt;tr&amp;gt;
        &amp;lt;th scope=&quot;row&quot;&amp;gt;
            &amp;lt;time class=&quot;timeago&quot; datetime=&quot;${datetime}&quot;&amp;gt;${datetime}&amp;lt;/time&amp;gt;
        &amp;lt;/th&amp;gt;
        &amp;lt;td&amp;gt;${event}&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;매도&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;${price.toLocaleString()}&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;${amount}&amp;lt;/td&amp;gt;
        &amp;lt;td&amp;gt;${sellPrice.toLocaleString()}&amp;lt;/td&amp;gt;
    &amp;lt;/tr&amp;gt;` + tradeHistory;

    localStorage.setItem(&quot;tradeHistory&quot;, tradeHistory);

    setStock(event, price, -1 * amount)
    getStocksPrice();
    showResult();
}

$(document).ready(function() {
    stocks = JSON.parse(localStorage.getItem(&quot;stocks&quot;));

    if (stocks == null) {
        stocks = initStocks;
    }

    cash = localStorage.getItem(&quot;cash&quot;);

    if (cash == null) {
        cash = initCash;
    }

    cash = parseFloat(cash);

    tradeHistory = localStorage.getItem(&quot;tradeHistory&quot;);

    if (tradeHistory == null) {
        tradeHistory = &quot;&quot;;
    }

    getStocksPrice();
    showResult();

    $(&quot;#buy&quot;).click(buyHandler);
    $(&quot;#sell&quot;).click(sellHandler);
});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #37352f; text-align: start;&quot; data-block-id=&quot;78b3f082-e781-4d36-b060-847201313e93&quot;&gt;
&lt;div style=&quot;background-color: #f7f6f3; text-align: left;&quot; data-content-editable-void=&quot;true&quot;&gt;
&lt;div style=&quot;background-color: #ffffff;&quot;&gt;
&lt;div id=&quot;:r4f:&quot; style=&quot;color: #000000;&quot; data-content-editable-leaf=&quot;true&quot;&gt;style.css&lt;/div&gt;
&lt;div style=&quot;color: #000000;&quot; data-content-editable-leaf=&quot;true&quot;&gt;
&lt;pre id=&quot;code_1712223353006&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;body {
    min-height: 75rem;
    padding-top: 4.5rem;
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
​&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #37352f; text-align: start;&quot; data-block-id=&quot;d5ba2b27-fe4c-4f94-bffa-5a17dc98a4e0&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <author>digital520</author>
      <guid isPermaLink="true">https://digital520.tistory.com/56</guid>
      <comments>https://digital520.tistory.com/56#entry56comment</comments>
      <pubDate>Thu, 4 Apr 2024 17:28:34 +0900</pubDate>
    </item>
    <item>
      <title>Part 6. 나만의 웹 서비스 공개 및 수익화</title>
      <link>https://digital520.tistory.com/55</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;6-1. AWS에 배포하여 미리보기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;드디어 우리가 만든 웹 서비스를 세상에 공개할 시간입니다! 우리는 전세계에 우리가 만든 서비스를 공개하기 위해 AWS(아마존 웹 서비스)를 사용하려고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  아마존닷컴의 클라우드 컴퓨팅 사업부. 현재 클라우드 컴퓨팅 분야에서 압도적인 세계 1위를 차지하고 있으며 2022년부로 16주년을 맞는 다국적 기업이자 역사상 가장 큰 IT 및 클라우드 기업 중 하나로 마이크로소프트, Apple, Google과 함께 MAGA의 일원이다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;AWS 회원가입&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 주소에 접속하여 회원가입을 진행합니다. 아래와 같이 이메일 주소와 계정 이름(영문)을 입력하여 진행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS 회원가입: &lt;a href=&quot;https://portal.aws.amazon.com/billing/signup&quot;&gt;https://portal.aws.amazon.com/billing/signup&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712216637821&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;AWS Console - Signup&quot; data-og-description=&quot;&quot; data-og-host=&quot;portal.aws.amazon.com&quot; data-og-source-url=&quot;https://portal.aws.amazon.com/billing/signup&quot; data-og-url=&quot;https://portal.aws.amazon.com/billing/signup&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://portal.aws.amazon.com/billing/signup&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://portal.aws.amazon.com/billing/signup&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;AWS Console - Signup&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;portal.aws.amazon.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;907&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CPnj3/btsGocLlbpX/usgO1HiJpsFRvjxwL3kYik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CPnj3/btsGocLlbpX/usgO1HiJpsFRvjxwL3kYik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CPnj3/btsGocLlbpX/usgO1HiJpsFRvjxwL3kYik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCPnj3%2FbtsGocLlbpX%2FusgO1HiJpsFRvjxwL3kYik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;907&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;907&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;932&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BKkm2/btsGkVdWPo2/hIhN6TY5Uz3sxml0Ivk7B1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BKkm2/btsGkVdWPo2/hIhN6TY5Uz3sxml0Ivk7B1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BKkm2/btsGkVdWPo2/hIhN6TY5Uz3sxml0Ivk7B1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBKkm2%2FbtsGkVdWPo2%2FhIhN6TY5Uz3sxml0Ivk7B1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;932&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;932&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자 암호를 입력합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;974&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPvMIn/btsGmuflqq3/wGa0ZE4x3KLRl8svzYGdx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPvMIn/btsGmuflqq3/wGa0ZE4x3KLRl8svzYGdx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPvMIn/btsGmuflqq3/wGa0ZE4x3KLRl8svzYGdx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPvMIn%2FbtsGmuflqq3%2FwGa0ZE4x3KLRl8svzYGdx0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;974&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;974&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인으로 선택하고 이름. 전화번호, 주소를 입력합니다. 주소는 영문으로 입력해야하니 네이버 영문주소 기능을 사용하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://search.naver.com/search.naver?where=nexearch&amp;amp;ie=utf8&amp;amp;X_CSA=address_search&amp;amp;query=%EB%84%A4%EC%9D%B4%EB%B2%84%20%EC%98%81%EB%AC%B8%EC%A3%BC%EC%86%8C&quot;&gt;[네이버 영문주소 검색]&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712216699625&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;네이버 영문주소 : 네이버 통합검색&quot; data-og-description=&quot;'네이버 영문주소'의 네이버 통합검색 결과입니다.&quot; data-og-host=&quot;search.naver.com&quot; data-og-source-url=&quot;https://search.naver.com/search.naver?where=nexearch&amp;amp;ie=utf8&amp;amp;X_CSA=address_search&amp;amp;query=%EB%84%A4%EC%9D%B4%EB%B2%84%20%EC%98%81%EB%AC%B8%EC%A3%BC%EC%86%8C&quot; data-og-url=&quot;https://search.naver.com/search.naver?X_CSA=address_search&amp;amp;ie=utf8&amp;amp;query=%EB%84%A4%EC%9D%B4%EB%B2%84+%EC%98%81%EB%AC%B8%EC%A3%BC%EC%86%8C&amp;amp;where=nexearch&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/yvlrA/hyVJTcCkA2/pNa6mbZIJM5SVz7EWkRMY1/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200&quot;&gt;&lt;a href=&quot;https://search.naver.com/search.naver?where=nexearch&amp;amp;ie=utf8&amp;amp;X_CSA=address_search&amp;amp;query=%EB%84%A4%EC%9D%B4%EB%B2%84%20%EC%98%81%EB%AC%B8%EC%A3%BC%EC%86%8C&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://search.naver.com/search.naver?where=nexearch&amp;amp;ie=utf8&amp;amp;X_CSA=address_search&amp;amp;query=%EB%84%A4%EC%9D%B4%EB%B2%84%20%EC%98%81%EB%AC%B8%EC%A3%BC%EC%86%8C&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/yvlrA/hyVJTcCkA2/pNa6mbZIJM5SVz7EWkRMY1/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;네이버 영문주소 : 네이버 통합검색&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;'네이버 영문주소'의 네이버 통합검색 결과입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;search.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1902&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beZ6Ev/btsGoaGWEj7/vm7iWKb3Qe6SQykpTAK9Pk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beZ6Ev/btsGoaGWEj7/vm7iWKb3Qe6SQykpTAK9Pk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beZ6Ev/btsGoaGWEj7/vm7iWKb3Qe6SQykpTAK9Pk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeZ6Ev%2FbtsGoaGWEj7%2Fvm7iWKb3Qe6SQykpTAK9Pk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1902&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1902&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결제정보를 입력합니다. 통상적으로 1달러가 결제되나 최대 2주후 환불됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1612&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bGckZa/btsGlZtorhF/gkqFEoCtuXImfYOweV3rnk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bGckZa/btsGlZtorhF/gkqFEoCtuXImfYOweV3rnk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bGckZa/btsGlZtorhF/gkqFEoCtuXImfYOweV3rnk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbGckZa%2FbtsGlZtorhF%2FgkqFEoCtuXImfYOweV3rnk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1612&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1612&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;카드 정보 입력시 아래 추가적인 정보를 요구할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1506&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lf50A/btsGnBkLo5G/9ruvpfZe9iKjhbcD1wkwj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lf50A/btsGnBkLo5G/9ruvpfZe9iKjhbcD1wkwj1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lf50A/btsGnBkLo5G/9ruvpfZe9iKjhbcD1wkwj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flf50A%2FbtsGnBkLo5G%2F9ruvpfZe9iKjhbcD1wkwj1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1506&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1506&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;휴대폰으로 전화번호 SMS 인증을 합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1506&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcnkDv/btsGnEBzo2D/z12Mla8HJc6wlGCl2WaKhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcnkDv/btsGnEBzo2D/z12Mla8HJc6wlGCl2WaKhk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcnkDv/btsGnEBzo2D/z12Mla8HJc6wlGCl2WaKhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcnkDv%2FbtsGnEBzo2D%2Fz12Mla8HJc6wlGCl2WaKhk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1506&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1506&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본 지원 - 무료 플랜을 선택합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1469&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZnnSe/btsGkDj6OXE/ftfYhF0lAkkBSNpLeO0200/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZnnSe/btsGkDj6OXE/ftfYhF0lAkkBSNpLeO0200/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZnnSe/btsGkDj6OXE/ftfYhF0lAkkBSNpLeO0200/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZnnSe%2FbtsGkDj6OXE%2FftfYhF0lAkkBSNpLeO0200%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1469&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1469&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;완료하였습니다! 위에서 기입한 정보로 로그인을 진행합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7GcpG/btsGmN6RRoq/qtp4lw4DJEH3MdCDJsHMYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7GcpG/btsGmN6RRoq/qtp4lw4DJEH3MdCDJsHMYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7GcpG/btsGmN6RRoq/qtp4lw4DJEH3MdCDJsHMYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7GcpG%2FbtsGmN6RRoq%2Fqtp4lw4DJEH3MdCDJsHMYk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1080&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS 콘솔에 접속하여 정보를 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;785&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpFHqa/btsGlXhZ73c/HbMUAbwqFaa0oqiSYSc1ok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpFHqa/btsGlXhZ73c/HbMUAbwqFaa0oqiSYSc1ok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpFHqa/btsGlXhZ73c/HbMUAbwqFaa0oqiSYSc1ok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpFHqa%2FbtsGlXhZ73c%2FHbMUAbwqFaa0oqiSYSc1ok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;785&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;785&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;나만의 도메인 구입하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 나만의 주소(도메인)를 구입할 차례입니다. 도메인은 AWS Route 53 에서 구입할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS Route 53: &lt;a href=&quot;https://us-east-1.console.aws.amazon.com/route53/v2/home&quot;&gt;https://us-east-1.console.aws.amazon.com/route53/v2/home&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712216886345&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;https://us-east-1.console.aws.amazon.com/route53/v2/home&quot; data-og-description=&quot;&quot; data-og-host=&quot;us-east-1.console.aws.amazon.com&quot; data-og-source-url=&quot;https://us-east-1.console.aws.amazon.com/route53/v2/home&quot; data-og-url=&quot;https://us-east-1.console.aws.amazon.com/route53/v2/home&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://us-east-1.console.aws.amazon.com/route53/v2/home&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://us-east-1.console.aws.amazon.com/route53/v2/home&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;https://us-east-1.console.aws.amazon.com/route53/v2/home&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;us-east-1.console.aws.amazon.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;522&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfQFqg/btsGlyv13ig/sKuCOUk1kTwxHfkPg9mtC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfQFqg/btsGlyv13ig/sKuCOUk1kTwxHfkPg9mtC1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfQFqg/btsGlyv13ig/sKuCOUk1kTwxHfkPg9mtC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfQFqg%2FbtsGlyv13ig%2FsKuCOUk1kTwxHfkPg9mtC1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;522&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;522&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좌측 메뉴 - 도메인 - 등록된 도메인을 클릭하고 [도메인 등록] 버튼을 클릭합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이곳에서 원하는 도메인 이름을 선택할 수 있습니다. 여러분들의 취향에 맞는, 서비스에 어울리는 도메인 이름을 검색하여 가용한 도메인을 선택할 수 있습니다. [장바구니에 추가] 버튼을 눌러 도메인을 선택합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  도메인 구입시 1년마다 금액을 지불해야합니다. 도메인 뒤에 붙는 이름(.com, .net 등)마다 가격이 상이하며 .com 의 경우 1년에 12미국달러의 요금이 청구됩니다. 도메인 구입시에는 프리티어 요금제가 적용되지 않습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;571&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/da9gZL/btsGmxJXmu3/QMH7e9ikaZvgzlKkuwYHM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/da9gZL/btsGmxJXmu3/QMH7e9ikaZvgzlKkuwYHM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/da9gZL/btsGmxJXmu3/QMH7e9ikaZvgzlKkuwYHM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fda9gZL%2FbtsGmxJXmu3%2FQMH7e9ikaZvgzlKkuwYHM1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;480&quot; height=&quot;571&quot; data-origin-width=&quot;480&quot; data-origin-height=&quot;571&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1237&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cy5UZC/btsGmAs4Bc2/iu0xQ8aA9kDm7KTfNGhQe1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cy5UZC/btsGmAs4Bc2/iu0xQ8aA9kDm7KTfNGhQe1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cy5UZC/btsGmAs4Bc2/iu0xQ8aA9kDm7KTfNGhQe1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcy5UZC%2FbtsGmAs4Bc2%2Fiu0xQ8aA9kDm7KTfNGhQe1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1237&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1237&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도메인 구입하는 사람의 연락처를 입력하고 [계속] 버튼을 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;770&quot; data-origin-height=&quot;1604&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpPNuh/btsGn0EnT4l/fRRDUdQx0ZT6GM4yXzwK1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpPNuh/btsGn0EnT4l/fRRDUdQx0ZT6GM4yXzwK1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpPNuh/btsGn0EnT4l/fRRDUdQx0ZT6GM4yXzwK1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpPNuh%2FbtsGn0EnT4l%2FfRRDUdQx0ZT6GM4yXzwK1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;770&quot; height=&quot;1604&quot; data-origin-width=&quot;770&quot; data-origin-height=&quot;1604&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 연락처를 확인하고 아래 사항을 추가로 선택합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;도메인 자동 갱신: 1년마다 자동으로 결제가 되며 도메인 사용기간이 자동 연장될지 여부, [활성화] 선택시 자동 결제/연장&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이용약관을 확인하시고 [주문 완료] 버튼을 클릭하면 1시간내에 도메인이 세팅완료 됩니다. (이메일로 알림을 줍니다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;965&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TPgPJ/btsGkDYHJgj/p6LKWzl83W4vgbHz3ES9Hk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TPgPJ/btsGkDYHJgj/p6LKWzl83W4vgbHz3ES9Hk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TPgPJ/btsGkDYHJgj/p6LKWzl83W4vgbHz3ES9Hk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTPgPJ%2FbtsGkDYHJgj%2Fp6LKWzl83W4vgbHz3ES9Hk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;965&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;965&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;저장공간(S3) 만들기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리가 만든 웹 서비스를 배포하기 위해 AWS의 수많은 서비스 중 S3(Simple Storage Service, 간편 저장 서비스)를 이용하려고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AWS S3: &lt;a href=&quot;https://s3.console.aws.amazon.com/s3/buckets?region=ap-northeast-2&quot;&gt;https://s3.console.aws.amazon.com/s3/buckets?region=ap-northeast-2&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712216993368&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;https://s3.console.aws.amazon.com/s3/buckets?region=ap-northeast-2&quot; data-og-description=&quot;&quot; data-og-host=&quot;s3.console.aws.amazon.com&quot; data-og-source-url=&quot;https://s3.console.aws.amazon.com/s3/buckets?region=ap-northeast-2&quot; data-og-url=&quot;https://s3.console.aws.amazon.com/s3/buckets?region=ap-northeast-2&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://s3.console.aws.amazon.com/s3/buckets?region=ap-northeast-2&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://s3.console.aws.amazon.com/s3/buckets?region=ap-northeast-2&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;https://s3.console.aws.amazon.com/s3/buckets?region=ap-northeast-2&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;s3.console.aws.amazon.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  이제부터 사용하는 모든 기능들은 유료 기능이므로 가격을 살펴보신 후 진행하시길 권장드립니다. S3 가격 정책: &lt;a href=&quot;https://aws.amazon.com/ko/s3/pricing/&quot;&gt;https://aws.amazon.com/ko/s3/pricing/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712217023405&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;company&quot; data-og-title=&quot;Amazon S3 Simple Storage Service 요금 - Amazon Web Services&quot; data-og-description=&quot;S3 교차 리전 복제, 동일 리전 복제 및 복제 시간 제어 S3 배치 복제 CRR 및 SRR과 같은 라이브 복제는 새로 업로드된 객체를 버킷에 쓰는 대로 자동으로 복제하는 반면, S3 배치 복제는 기존 객체를 &quot; data-og-host=&quot;aws.amazon.com&quot; data-og-source-url=&quot;https://aws.amazon.com/ko/s3/pricing/&quot; data-og-url=&quot;https://aws.amazon.com/ko/s3/pricing/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ElFsl/hyVJZ4XLS0/iMpUIYtfKTWY10kN1wBa80/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/bVZAbD/hyVJ3M3PCR/q5X03NyDV1FSqJBrfOPHy1/img.png?width=179&amp;amp;height=109&amp;amp;face=0_0_179_109&quot;&gt;&lt;a href=&quot;https://aws.amazon.com/ko/s3/pricing/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aws.amazon.com/ko/s3/pricing/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ElFsl/hyVJZ4XLS0/iMpUIYtfKTWY10kN1wBa80/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/bVZAbD/hyVJ3M3PCR/q5X03NyDV1FSqJBrfOPHy1/img.png?width=179&amp;amp;height=109&amp;amp;face=0_0_179_109');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Amazon S3 Simple Storage Service 요금 - Amazon Web Services&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;S3 교차 리전 복제, 동일 리전 복제 및 복제 시간 제어 S3 배치 복제 CRR 및 SRR과 같은 라이브 복제는 새로 업로드된 객체를 버킷에 쓰는 대로 자동으로 복제하는 반면, S3 배치 복제는 기존 객체를&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aws.amazon.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로 가입하신 분들은 1년간 한정된 서비스에 한해 프리티어 요금을 사용하실 수 있습니다. 프리티어는 1년간 한도내에서 무료로 사용해 볼 수 있는 시스템입니다. (참고: &lt;a href=&quot;https://inpa.tistory.com/entry/AWS-&quot;&gt;https://inpa.tistory.com/entry/AWS-&lt;/a&gt;&lt;a href=&quot;https://inpa.tistory.com/entry/AWS-%F0%9F%92%B0-%ED%94%84%EB%A6%AC%ED%8B%B0%EC%96%B4-%EC%9A%94%EA%B8%88-%ED%8F%AD%ED%83%84-%EB%B0%A9%EC%A7%80-%F0%9F%92%B8-%EB%AC%B4%EB%A3%8C-%EC%82%AC%EC%9A%A9%EB%9F%89-%EC%A0%95%EB%A6%AC#S3&quot;&gt; -프리티어-요금-폭탄-방지- -무료-사용량-정리#S3&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;571&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bk9Vpu/btsGmVKyW2I/r9mnDfH80d64voyvlSJ4m1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bk9Vpu/btsGmVKyW2I/r9mnDfH80d64voyvlSJ4m1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bk9Vpu/btsGmVKyW2I/r9mnDfH80d64voyvlSJ4m1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbk9Vpu%2FbtsGmVKyW2I%2Fr9mnDfH80d64voyvlSJ4m1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;580&quot; height=&quot;571&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;571&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[버킷 만들기] 버튼을 클릭하여 소스코드를 저장할 공간(버킷)을 생성합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;602&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkPWRv/btsGlyCLWpJ/9kg5pYHxY3qH406GNVAva1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkPWRv/btsGlyCLWpJ/9kg5pYHxY3qH406GNVAva1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkPWRv/btsGlyCLWpJ/9kg5pYHxY3qH406GNVAva1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkPWRv%2FbtsGlyCLWpJ%2F9kg5pYHxY3qH406GNVAva1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;602&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;602&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버킷 이름은 위에서 구입한 도메인 이름과 동일하게 입력합니다. (예: &lt;a href=&quot;http://5pistudio.com&quot;&gt;5pistudio.com&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;퍼블릭 액세스 차단 설정에서 모든 퍼블릭 액세스 차단의 체크를 해제하여 누구나 웹 서비스에 접속할 수 있도록 설정합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;672&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/osmV8/btsGn05steS/kkK0cWgQsIbXKduKCTlMPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/osmV8/btsGn05steS/kkK0cWgQsIbXKduKCTlMPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/osmV8/btsGn05steS/kkK0cWgQsIbXKduKCTlMPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FosmV8%2FbtsGn05steS%2FkkK0cWgQsIbXKduKCTlMPK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;672&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;672&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로 생성한 버킷(예제에서는 5pitudio.com)을 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;476&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rIdav/btsGmMz7OjI/X1kVzMKfB1NWuKK3J89Cr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rIdav/btsGmMz7OjI/X1kVzMKfB1NWuKK3J89Cr0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rIdav/btsGmMz7OjI/X1kVzMKfB1NWuKK3J89Cr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrIdav%2FbtsGmMz7OjI%2FX1kVzMKfB1NWuKK3J89Cr0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;476&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;476&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;정적 웹 사이트 호스팅 설정&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상단의 [속성] 탭을 클릭합니다. 가장 아래 정적 [웹 사이트 호스팅] 섹션에서 [편집] 버튼을 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;246&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/r4JPC/btsGmxQIjtK/OUvGUsGJAU9CnFlCrkm5P1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/r4JPC/btsGmxQIjtK/OUvGUsGJAU9CnFlCrkm5P1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/r4JPC/btsGmxQIjtK/OUvGUsGJAU9CnFlCrkm5P1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fr4JPC%2FbtsGmxQIjtK%2FOUvGUsGJAU9CnFlCrkm5P1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;246&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;246&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정적 웹 사이트 호스팅 상세페이지에서 아래와 같이 설정합니다. 설정 완료 후 [변경 사항 저장] 버튼을 클릭합니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;정적 웹 사이트 호스팅: [활성화]&lt;/li&gt;
&lt;li&gt;호스팅 유형: [정적 웹 사이트 호스팅]&lt;/li&gt;
&lt;li&gt;인덱스 문서: [main.html] &amp;rarr; 홈페이지 HTML 파일 이름과 일치해야 함!&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1273&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uqJKG/btsGoe3tq2O/eBnMM9D06oyx9MufNgzaek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uqJKG/btsGoe3tq2O/eBnMM9D06oyx9MufNgzaek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uqJKG/btsGoe3tq2O/eBnMM9D06oyx9MufNgzaek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuqJKG%2FbtsGoe3tq2O%2FeBnMM9D06oyx9MufNgzaek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1273&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1273&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같이 접속 주소(버킷 웹 사이트 엔드포인트)가 생성되었다면 성공입니다! 이 접속 주소를 소중히 간직하세요!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;340&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XMbUE/btsGmc68X2C/QZsXzyha7IYrdFEEAPg0M0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XMbUE/btsGmc68X2C/QZsXzyha7IYrdFEEAPg0M0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XMbUE/btsGmc68X2C/QZsXzyha7IYrdFEEAPg0M0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXMbUE%2FbtsGmc68X2C%2FQZsXzyha7IYrdFEEAPg0M0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;340&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;340&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;버킷 권한 설정&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상단의 [권한] 탭을 클릭합니다. 버킷 정책에서 [편집] 버튼을 클릭하고 아래와 같이 입력합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[버킷-이름]을 우리가 위에서 만든 버킷 이름으로 대체합니다. (예제에서는 &lt;a href=&quot;http://5pistudio.com&quot;&gt;5pistudio.com&lt;/a&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[변경 사항 저장] 버튼을 클릭합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712217159983&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
    &quot;Version&quot;: &quot;2012-10-17&quot;,
    &quot;Statement&quot;: [
        {
            &quot;Sid&quot;: &quot;PublicReadGetObject&quot;,
            &quot;Effect&quot;: &quot;Allow&quot;,
            &quot;Principal&quot;: &quot;*&quot;,
            &quot;Action&quot;: [
                &quot;s3:GetObject&quot;
            ],
            &quot;Resource&quot;: [
                &quot;arn:aws:s3:::[버킷-이름]/*&quot;
            ]
        }
    ]
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1110&quot; data-origin-height=&quot;758&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zOuvC/btsGl3WGk92/Of9k5vcK1V0I9ahuH9BfQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zOuvC/btsGl3WGk92/Of9k5vcK1V0I9ahuH9BfQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zOuvC/btsGl3WGk92/Of9k5vcK1V0I9ahuH9BfQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzOuvC%2FbtsGl3WGk92%2FOf9k5vcK1V0I9ahuH9BfQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1110&quot; height=&quot;758&quot; data-origin-width=&quot;1110&quot; data-origin-height=&quot;758&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버킷 정책이 아래와 같이 되었다면 성공입니다. (버킷 이름은 도메인에 따라 다를 수 있습니다.)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;579&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dWQbmf/btsGnG7ajFj/VcQDpgf2Iwr6GN1NejmlU0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dWQbmf/btsGnG7ajFj/VcQDpgf2Iwr6GN1NejmlU0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dWQbmf/btsGnG7ajFj/VcQDpgf2Iwr6GN1NejmlU0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdWQbmf%2FbtsGnG7ajFj%2FVcQDpgf2Iwr6GN1NejmlU0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;579&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;579&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;소스코드 업로드하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 본격적으로 소스코드를 업로드할 시간입니다. 상단의 [객체] 버튼을 클릭합니다. 객체 메뉴에서는 파일을 업로드할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;562&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/X1juo/btsGlRa5m98/nEEHE9oKFRtxGIrAIgTiHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/X1juo/btsGlRa5m98/nEEHE9oKFRtxGIrAIgTiHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/X1juo/btsGlRa5m98/nEEHE9oKFRtxGIrAIgTiHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FX1juo%2FbtsGlRa5m98%2FnEEHE9oKFRtxGIrAIgTiHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;562&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;562&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리가 만들었던 파일들을 통째로 선택하여 드래그 앤 드랍하여 업로드합니다. 드래그 앤 드랍 후 파일을 확인하고 [업로드] 버튼을 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;450&quot; data-origin-height=&quot;390&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/draePp/btsGnDo9kZF/woifjlK0kakX7zPQUG9SXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/draePp/btsGnDo9kZF/woifjlK0kakX7zPQUG9SXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/draePp/btsGnDo9kZF/woifjlK0kakX7zPQUG9SXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdraePp%2FbtsGnDo9kZF%2FwoifjlK0kakX7zPQUG9SXK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;450&quot; height=&quot;390&quot; data-origin-width=&quot;450&quot; data-origin-height=&quot;390&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1641&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBqUxN/btsGmAzR9aa/bYLmMpsWhILukg4UC6vAkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBqUxN/btsGmAzR9aa/bYLmMpsWhILukg4UC6vAkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBqUxN/btsGmAzR9aa/bYLmMpsWhILukg4UC6vAkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBqUxN%2FbtsGmAzR9aa%2FbYLmMpsWhILukg4UC6vAkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1641&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1641&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 위에서 소중히 간직했던 접속주소를 복사하여 브라우저 주소표시줄에 붙여넣고 접속합니다. 모든 기능들이 잘 동작하는지 확인합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1514&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kKk3I/btsGkS2zKxA/mFRZdbL9CPQYV8a4eiiXtK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kKk3I/btsGkS2zKxA/mFRZdbL9CPQYV8a4eiiXtK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kKk3I/btsGkS2zKxA/mFRZdbL9CPQYV8a4eiiXtK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkKk3I%2FbtsGkS2zKxA%2FmFRZdbL9CPQYV8a4eiiXtK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1514&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1514&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;6-2. 도메인과 웹 서비스 연결하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Route 53 대시보드에서 시작합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Route 53 대시보드: &lt;a href=&quot;https://us-east-1.console.aws.amazon.com/route53/v2/home&quot;&gt;https://us-east-1.console.aws.amazon.com/route53/v2/home&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712217276658&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;https://us-east-1.console.aws.amazon.com/route53/v2/home&quot; data-og-description=&quot;&quot; data-og-host=&quot;us-east-1.console.aws.amazon.com&quot; data-og-source-url=&quot;https://us-east-1.console.aws.amazon.com/route53/v2/home&quot; data-og-url=&quot;https://us-east-1.console.aws.amazon.com/route53/v2/home&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://us-east-1.console.aws.amazon.com/route53/v2/home&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://us-east-1.console.aws.amazon.com/route53/v2/home&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;https://us-east-1.console.aws.amazon.com/route53/v2/home&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;us-east-1.console.aws.amazon.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좌측 메뉴 - 호스팅 영역을 클릭하여 구입한 도메인을 확인합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  Route 53의 호스팅 영역 서비스를 사용할 경우 월 소액의 요금이 청구됩니다. 요금정책: &lt;a href=&quot;https://aws.amazon.com/ko/route53/pricing/&quot;&gt;https://aws.amazon.com/ko/route53/pricing/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712217298332&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;company&quot; data-og-title=&quot;Amazon Route 53 요금 - Amazon Web Services&quot; data-og-description=&quot;&quot; data-og-host=&quot;aws.amazon.com&quot; data-og-source-url=&quot;https://aws.amazon.com/ko/route53/pricing/&quot; data-og-url=&quot;https://aws.amazon.com/ko/route53/pricing/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b7n76G/hyVJYEW8vx/FHUaoB2dBIMRROiqI2FrK1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/bbP8R2/hyVJZcPXuD/xB99XyZGxrmZ9g4LCkfctK/img.png?width=179&amp;amp;height=109&amp;amp;face=0_0_179_109&quot;&gt;&lt;a href=&quot;https://aws.amazon.com/ko/route53/pricing/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://aws.amazon.com/ko/route53/pricing/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b7n76G/hyVJYEW8vx/FHUaoB2dBIMRROiqI2FrK1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/bbP8R2/hyVJZcPXuD/xB99XyZGxrmZ9g4LCkfctK/img.png?width=179&amp;amp;height=109&amp;amp;face=0_0_179_109');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Amazon Route 53 요금 - Amazon Web Services&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;aws.amazon.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;호스팅 영역은 생성된 시점과 그 후로 매월 다음 달 1일에 요금이 청구됩니다. 테스트를 허용하기 위해 생성 후 12시간 이내에 삭제된 호스팅 영역에 대해서는 요금이 부과되지 않습니다. 하지만 해당 호스팅 영역에 대한 쿼리에는 여전히 아래와 같이 요금이 부과됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;호스팅 영역 하나에는 10,000개의 레코드가 포함됩니다. 영역당 10,000개를 초과하는 각 레코드에는 월 0.0015 USD의 요금이 부과됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;307&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LsCZ0/btsGnwX66kz/YmRN45De0rjSzTARwgnHEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LsCZ0/btsGnwX66kz/YmRN45De0rjSzTARwgnHEK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LsCZ0/btsGnwX66kz/YmRN45De0rjSzTARwgnHEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLsCZ0%2FbtsGnwX66kz%2FYmRN45De0rjSzTARwgnHEK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;307&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;307&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구입한 도메인을 클릭하고 [레코드 생성] 버튼을 클릭합니다. 빠른 레코드 생성 창에서 해야할 것은 아래와 같습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;레코드 이름: 빈칸&lt;/li&gt;
&lt;li&gt;레코드 유형: A - IPv4 주소 및 일부 AWS 리소스로 트래픽 라우팅&lt;/li&gt;
&lt;li&gt;별칭: 활성화&lt;/li&gt;
&lt;li&gt;트래픽 라우팅 대상
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;S3 웹 사이트 엔드포인트에 대한 별칭&lt;/li&gt;
&lt;li&gt;아시아 태평양(서울) [ap-northeast-2]&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://s3-website.ap-northeast-2.amazonaws.com&quot;&gt;s3-website.ap-northeast-2.amazonaws.com&lt;/a&gt; (빈칸 클릭시 자동완성됨)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;라우팅 정책: 단순 라우팅&lt;/li&gt;
&lt;li&gt;대상 상태 평가: 아니오&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;776&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LrQ9y/btsGleqRwGt/PVn4ZGtBcidFxPc3igLkw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LrQ9y/btsGleqRwGt/PVn4ZGtBcidFxPc3igLkw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LrQ9y/btsGleqRwGt/PVn4ZGtBcidFxPc3igLkw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLrQ9y%2FbtsGleqRwGt%2FPVn4ZGtBcidFxPc3igLkw0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;776&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;776&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[레코드 생성] 버튼을 클릭하여 레코드를 생성하면 최대 24시간 안에 도메인 연결이 완료됩니다. 여러분들의 도메인으로 접속하여 잘 접속되는지 체크합니다!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;853&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/exrE7k/btsGn8h4jg1/5eeBKfwKusqlJ6eMJckN7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/exrE7k/btsGn8h4jg1/5eeBKfwKusqlJ6eMJckN7k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/exrE7k/btsGn8h4jg1/5eeBKfwKusqlJ6eMJckN7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FexrE7k%2FbtsGn8h4jg1%2F5eeBKfwKusqlJ6eMJckN7k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;853&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;853&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;6-3. 검색 엔진 최적화(SEO)를 통한 웹 서비스 노출 극대화&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 사용자들은 우리가 만든 웹 서비스의 주소를 알면 그 주소를 주소표시줄에 입력하여 접속할 수 있게 되었습니다. 그러나 사람들은 보통 주소를 쳐서 들어오는 것이 아니라 구글, 네이버에 검색해서 들어오는 경우가 대부분이죠? 검색이 잘되기 위해서는 우리는 검색 엔진 최적화(SEO, Search Engine Optimization)를 해주어야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  SEO는 &quot;검색 엔진 최적화&quot;를 의미합니다. 쉽게 말해 구글, 빙 등 검색엔진에서 사업과 관련된 제품이나 서비스를 사람들이 검색할 때 가시성을 높이기 위해 사이트를 개선하는 과정을 의미합니다. 검색 결과에서 페이지를 더 잘 볼수록 관심을 끌고 잠재 고객과 기존 고객을 비즈니스로 끌어들일 가능성이 높아집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;메타 태그 수정하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메타 태그는 웹페이지가 어떤 웹페이지인지 검색 엔진(구글, 네이버 등)에게 설명하는 역할을 하는 태그입니다. 간단히 말하면 웹페이지의 이력서라고 할 수 있겠네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  메타 태그(meta tag)는 웹페이지가 담고 있는 컨텐츠가 아닌 웹페이지 자체의 정보를 명시하기 위한 목적으로 사용되는 HTML 태그를 의미합니다. 이러한 웹페이지의 메타 정보는 주로 HTML의 &amp;lt;meta&amp;gt;요소를 통해 마크업을 하며, HTML 문서 내에서 &amp;lt;head&amp;gt;요소 아래 배치되므로 일반 유저가 보게되는 웹페이지의 컨텐츠에는 아무 영향을 주지 않습니다. 반면에 검색엔진과 같은 기계들이 웹페이지를 읽어야할 때는 메타 태그의 내용들이 해당 서비스에서 어떻게 표시될지를 결정하는 매우 핵심적인 요소가 됩니다. 출처: &lt;a href=&quot;https://www.daleseo.com/html-meta-tags-for-seo&quot;&gt;https://www.daleseo.com/html-meta-tags-for-seo&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712217411078&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;메타 태그를 통한 검색엔진 최적화 (SEO)&quot; data-og-description=&quot;Engineering Blog by Dale Seo&quot; data-og-host=&quot;www.daleseo.com&quot; data-og-source-url=&quot;https://www.daleseo.com/html-meta-tags-for-seo&quot; data-og-url=&quot;https://www.daleseo.com/html-meta-tags-for-seo/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/QpBRl/hyVJRFRX5f/bOuEBkqwDfK3c10IgL5ZW0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.daleseo.com/html-meta-tags-for-seo&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.daleseo.com/html-meta-tags-for-seo&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/QpBRl/hyVJRFRX5f/bOuEBkqwDfK3c10IgL5ZW0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;메타 태그를 통한 검색엔진 최적화 (SEO)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Engineering Blog by Dale Seo&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.daleseo.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메타 태그를 쉽게 확인하는 방법은 아래 서비스를 사용하는 방법입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Meta Tags: &lt;a href=&quot;https://metatags.io&quot;&gt;https://metatags.io&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712217422437&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Meta Tags &amp;mdash; Preview, Edit and Generate&quot; data-og-description=&quot;With Meta Tags you can edit and experiment with your content then preview how your webpage will look on Google, Facebook, Twitter and more!&quot; data-og-host=&quot;metatags.io&quot; data-og-source-url=&quot;https://metatags.io&quot; data-og-url=&quot;https://metatags.io/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/buhaVW/hyVJUWSmWC/eFtgkA2SaEQk5HF159wKsk/img.jpg?width=2400&amp;amp;height=1256&amp;amp;face=0_0_2400_1256,https://scrap.kakaocdn.net/dn/oM867/hyVJ3M3ZA3/IVG2Y94o1A9rjvjABw5sJK/img.jpg?width=2400&amp;amp;height=1256&amp;amp;face=0_0_2400_1256,https://scrap.kakaocdn.net/dn/hgD7P/hyVJWtBWI9/hFkN2PkZy5SxrvKolyrCIK/img.jpg?width=2400&amp;amp;height=1256&amp;amp;face=0_0_2400_1256&quot;&gt;&lt;a href=&quot;https://metatags.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://metatags.io&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/buhaVW/hyVJUWSmWC/eFtgkA2SaEQk5HF159wKsk/img.jpg?width=2400&amp;amp;height=1256&amp;amp;face=0_0_2400_1256,https://scrap.kakaocdn.net/dn/oM867/hyVJ3M3ZA3/IVG2Y94o1A9rjvjABw5sJK/img.jpg?width=2400&amp;amp;height=1256&amp;amp;face=0_0_2400_1256,https://scrap.kakaocdn.net/dn/hgD7P/hyVJWtBWI9/hFkN2PkZy5SxrvKolyrCIK/img.jpg?width=2400&amp;amp;height=1256&amp;amp;face=0_0_2400_1256');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Meta Tags &amp;mdash; Preview, Edit and Generate&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;With Meta Tags you can edit and experiment with your content then preview how your webpage will look on Google, Facebook, Twitter and more!&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;metatags.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;678&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cnK43K/btsGmM1dojy/SzsjxxZHfDsaOTK3YdQAZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cnK43K/btsGmM1dojy/SzsjxxZHfDsaOTK3YdQAZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cnK43K/btsGmM1dojy/SzsjxxZHfDsaOTK3YdQAZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcnK43K%2FbtsGmM1dojy%2FSzsjxxZHfDsaOTK3YdQAZk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;678&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;678&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;조회할 페이지의 주소를 입력할 수 있는 칸이 있고 입력한 주소가 각 플랫폼에서 어떻게 보여지는지 확인할 수 있습니다. 우리가 만든 웹 서비스의 메타 태그를 확인해보면 다음과 같이 아무것도 없는 것을 볼 수 있어요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;770&quot; data-origin-height=&quot;788&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgRPNr/btsGoeCplcC/SStkx2GY8fm8KP8ZyjT0f1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgRPNr/btsGoeCplcC/SStkx2GY8fm8KP8ZyjT0f1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgRPNr/btsGoeCplcC/SStkx2GY8fm8KP8ZyjT0f1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgRPNr%2FbtsGoeCplcC%2FSStkx2GY8fm8KP8ZyjT0f1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;770&quot; height=&quot;788&quot; data-origin-width=&quot;770&quot; data-origin-height=&quot;788&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Meta Tags 웹사이트에서 먼저 수정해서 미리보기할 수 있습니다. 왼쪽 METADATA에 정보들을 입력하면 실시간으로 반영된 결과를 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;723&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dKojWJ/btsGmW3LzDL/QU60WL7q9cI0apZaVBx0TK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dKojWJ/btsGmW3LzDL/QU60WL7q9cI0apZaVBx0TK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dKojWJ/btsGmW3LzDL/QU60WL7q9cI0apZaVBx0TK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdKojWJ%2FbtsGmW3LzDL%2FQU60WL7q9cI0apZaVBx0TK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;723&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;723&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다 완성되었다면 오른쪽 위에 [GENERATE META TAGS] 버튼을 눌러 메타 태그를 생성할 수 있습니다. 아래와 같은 HTML 태그가 나오죠.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1143&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/djy8tT/btsGlw53t7f/JayruZ1pGAra1ueTntWGx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/djy8tT/btsGlw53t7f/JayruZ1pGAra1ueTntWGx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/djy8tT/btsGlw53t7f/JayruZ1pGAra1ueTntWGx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdjy8tT%2FbtsGlw53t7f%2FJayruZ1pGAra1ueTntWGx0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1143&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1143&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 태그를 복사해서 main.html 의 &amp;lt;head&amp;gt; 안에 붙여넣기 합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712217494322&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&amp;gt;
    &amp;lt;!-- Primary Meta Tags --&amp;gt;
    &amp;lt;title&amp;gt;빵형의 홈페이지&amp;lt;/title&amp;gt;
    &amp;lt;meta name=&quot;title&quot; content=&quot;빵형의 홈페이지&quot;&amp;gt;
    &amp;lt;meta name=&quot;description&quot; content=&quot;사칙연산 계산기, 대출이자 계산기, 저장가능한 메모장, 주식투자 포트폴리오를 한 번에 사용할 수 있는 편리한 웹 서비스!&quot;&amp;gt;

    &amp;lt;!-- Open Graph / Facebook --&amp;gt;
    &amp;lt;meta property=&quot;og:type&quot; content=&quot;website&quot;&amp;gt;
    &amp;lt;meta property=&quot;og:url&quot; content=&quot;http://5pistudio.com/&quot;&amp;gt;
    &amp;lt;meta property=&quot;og:title&quot; content=&quot;빵형의 홈페이지&quot;&amp;gt;
    &amp;lt;meta property=&quot;og:description&quot; content=&quot;사칙연산 계산기, 대출이자 계산기, 저장가능한 메모장, 주식투자 포트폴리오를 한 번에 사용할 수 있는 편리한 웹 서비스!&quot;&amp;gt;
    &amp;lt;meta property=&quot;og:image&quot; content=&quot;&quot;&amp;gt;

    &amp;lt;!-- Twitter --&amp;gt;
    &amp;lt;meta property=&quot;twitter:card&quot; content=&quot;summary_large_image&quot;&amp;gt;
    &amp;lt;meta property=&quot;twitter:url&quot; content=&quot;http://5pistudio.com/&quot;&amp;gt;
    &amp;lt;meta property=&quot;twitter:title&quot; content=&quot;빵형의 홈페이지&quot;&amp;gt;
    &amp;lt;meta property=&quot;twitter:description&quot; content=&quot;사칙연산 계산기, 대출이자 계산기, 저장가능한 메모장, 주식투자 포트폴리오를 한 번에 사용할 수 있는 편리한 웹 서비스!&quot;&amp;gt;
    &amp;lt;meta property=&quot;twitter:image&quot; content=&quot;&quot;&amp;gt;

    &amp;lt;link href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;붙여넣은 메타 태그를 잘 살펴보시면 og:image 와 twitter:image 의 content 가 비어있는 것을 볼 수 있는데요. 페이스북, 트위터, 카카오톡에 링크를 공유할 때 보여지는 이미지를 변경할 수 있습니다. 일단 우리가 사용할 이미지를 만들거나 다운로드 받아주세요. 저는 아래와 같은 이미지를 사용하겠습니다!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;819&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MIemV/btsGmeRoMZD/BWasmTyTowHt0tjPpXn5c0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MIemV/btsGmeRoMZD/BWasmTyTowHt0tjPpXn5c0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MIemV/btsGmeRoMZD/BWasmTyTowHt0tjPpXn5c0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMIemV%2FbtsGmeRoMZD%2FBWasmTyTowHt0tjPpXn5c0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;819&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;819&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 이미지를 AWS S3에 업로드합니다. 업로드가 완료되면 이 이미지를 클릭하여 객체 개요를 확인할 수 있는데 객체 개요에 객체 URL을 복사합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;525&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0OMQq/btsGmV4RzLE/4zoBUrNWMoTRYCzrxXa0F1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0OMQq/btsGmV4RzLE/4zoBUrNWMoTRYCzrxXa0F1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0OMQq/btsGmV4RzLE/4zoBUrNWMoTRYCzrxXa0F1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0OMQq%2FbtsGmV4RzLE%2F4zoBUrNWMoTRYCzrxXa0F1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;525&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;525&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복사한 URL을 og:image, twitter:image 의 content 안에 복사합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712217558184&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&amp;gt;
    &amp;lt;!-- Primary Meta Tags --&amp;gt;
    &amp;lt;title&amp;gt;빵형의 홈페이지&amp;lt;/title&amp;gt;
    &amp;lt;meta name=&quot;title&quot; content=&quot;빵형의 홈페이지&quot;&amp;gt;
    &amp;lt;meta name=&quot;description&quot; content=&quot;사칙연산 계산기, 대출이자 계산기, 저장가능한 메모장, 주식투자 포트폴리오를 한 번에 사용할 수 있는 편리한 웹 서비스!&quot;&amp;gt;

    &amp;lt;!-- Open Graph / Facebook --&amp;gt;
    &amp;lt;meta property=&quot;og:type&quot; content=&quot;website&quot;&amp;gt;
    &amp;lt;meta property=&quot;og:url&quot; content=&quot;http://5pistudio.com/&quot;&amp;gt;
    &amp;lt;meta property=&quot;og:title&quot; content=&quot;빵형의 홈페이지&quot;&amp;gt;
    &amp;lt;meta property=&quot;og:description&quot; content=&quot;사칙연산 계산기, 대출이자 계산기, 저장가능한 메모장, 주식투자 포트폴리오를 한 번에 사용할 수 있는 편리한 웹 서비스!&quot;&amp;gt;
    &amp;lt;meta property=&quot;og:image&quot; content=&quot;https://s3.ap-northeast-2.amazonaws.com/5pistudio.com/training.png&quot;&amp;gt;

    &amp;lt;!-- Twitter --&amp;gt;
    &amp;lt;meta property=&quot;twitter:card&quot; content=&quot;summary_large_image&quot;&amp;gt;
    &amp;lt;meta property=&quot;twitter:url&quot; content=&quot;http://5pistudio.com/&quot;&amp;gt;
    &amp;lt;meta property=&quot;twitter:title&quot; content=&quot;빵형의 홈페이지&quot;&amp;gt;
    &amp;lt;meta property=&quot;twitter:description&quot; content=&quot;사칙연산 계산기, 대출이자 계산기, 저장가능한 메모장, 주식투자 포트폴리오를 한 번에 사용할 수 있는 편리한 웹 서비스!&quot;&amp;gt;
    &amp;lt;meta property=&quot;twitter:image&quot; content=&quot;https://s3.ap-northeast-2.amazonaws.com/5pistudio.com/training.png&quot;&amp;gt;

    &amp;lt;link href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메타 태그를 붙여넣는다고해서 페이지의 모양의 달라지진 않습니다. 그러나 검색 엔진이 검색할 때 메타태그를 보고 참고하여 사람들에게 노출시키죠. 메타 태그를 업데이트했으니 이제 AWS S3 버킷에 다시 업로드하여 변경사항을 적용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 한 번 &lt;a href=&quot;http://metatags.io&quot;&gt;metatags.io&lt;/a&gt; 웹사이트에서 도메인을 입력하고 결과를 확인합니다. 카카오톡에 붙여넣어도 아래와 같이 보입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;974&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JdJ4t/btsGnHruyzP/LvIrWNBfq3HFWINDzVA200/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JdJ4t/btsGnHruyzP/LvIrWNBfq3HFWINDzVA200/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JdJ4t/btsGnHruyzP/LvIrWNBfq3HFWINDzVA200/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJdJ4t%2FbtsGnHruyzP%2FLvIrWNBfq3HFWINDzVA200%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;580&quot; height=&quot;974&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;974&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;6-4. 웹 서비스 수익화를 위해 광고 신청하기 (구글 애드센스)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;광고를 게재할 수 있는 플랫폼은 여러개가 있습니다. 구글 애드센스말고도 카카오 애드핏 등의 광고를 통한 수익 창출 방법이 있는데 먼저 구글 애드센스 신청방법을 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구글 애드센스: &lt;a href=&quot;https://www.google.com/adsense/start/&quot;&gt;https://www.google.com/adsense/start/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[시작하기] 버튼을 눌러 구글 아이디로 로그인합니다. 좌측 메뉴에서 [사이트] 버튼을 클릭하고 [사이트 추가] 버튼을 클릭합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;647&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ekS7HY/btsGlZfROzs/xq9HwBVkomAULoE5nUwUP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ekS7HY/btsGlZfROzs/xq9HwBVkomAULoE5nUwUP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ekS7HY/btsGlZfROzs/xq9HwBVkomAULoE5nUwUP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FekS7HY%2FbtsGlZfROzs%2Fxq9HwBVkomAULoE5nUwUP0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;647&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;647&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리가 구입한 도메인을 입력하고 [저장하고 계속하기] 버튼을 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;501&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cucuZo/btsGkVLPBZM/Psvj8c5xd3flhRfFS71C4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cucuZo/btsGkVLPBZM/Psvj8c5xd3flhRfFS71C4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cucuZo/btsGkVLPBZM/Psvj8c5xd3flhRfFS71C4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcucuZo%2FbtsGkVLPBZM%2FPsvj8c5xd3flhRfFS71C4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;501&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;501&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같은 화면에서 코드를 추가하라는 메시지가 뜹니다. 코드를 선택하여 복사하고 모든 html 파일 아래쪽에 붙여넣기합니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;/part2/index.html&lt;/li&gt;
&lt;li&gt;/part3/index.html&lt;/li&gt;
&lt;li&gt;/part4/index.html&lt;/li&gt;
&lt;li&gt;/part5/index.html&lt;/li&gt;
&lt;li&gt;/main.html&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1221&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qBZY5/btsGlY85tlC/wpa7DK3pFqAkijUDoRc7Uk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qBZY5/btsGlY85tlC/wpa7DK3pFqAkijUDoRc7Uk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qBZY5/btsGlY85tlC/wpa7DK3pFqAkijUDoRc7Uk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqBZY5%2FbtsGlY85tlC%2Fwpa7DK3pFqAkijUDoRc7Uk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1221&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1221&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 파일을 저장하고 AWS S3에 다시 업로드하여 변경사항을 적용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 [검토 요청] 버튼을 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;416&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QdeWE/btsGl3WHQD8/auHw6DRGJ4zYAuesqKaWYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QdeWE/btsGl3WHQD8/auHw6DRGJ4zYAuesqKaWYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QdeWE/btsGl3WHQD8/auHw6DRGJ4zYAuesqKaWYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQdeWE%2FbtsGl3WHQD8%2FauHw6DRGJ4zYAuesqKaWYK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;416&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;416&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같은 메시지가 뜨면 보통 5일에서 1개월 이내 신청이 완료됩니다. 애드센스 신청이 거절되는 경우가 종종 있는데 신청한 웹사이트의 내용이 부족하거나 부적절할 경우 승인이 거절되는 경우가 많습니다. 더 많은 서비스와 컨텐츠가 있을 수록 승인기간이 짧아지고 승인될 확률이 높아집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;신청한지 10시간만에 메일을 받았습니다. 거절 당했네요. 이유는 컨텐츠 부족입니다. 구글 애드센스 신청은 &amp;ldquo;애드 고시&amp;rdquo;라고 부를만큼 승인 절차가 까다롭습니다. 승인받기 위해서는 더 예쁜 디자인과 많은 서비스를 추가해야할 것 같습니다. 더 많은 컨텐츠를 추가하고 [검토 요청] 버튼을 눌러 다시 검토를 요청할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;920&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6Kzs4/btsGnwKBVgy/nRqM6JX6bqSwDqz6Ktx1o1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6Kzs4/btsGnwKBVgy/nRqM6JX6bqSwDqz6Ktx1o1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6Kzs4/btsGnwKBVgy/nRqM6JX6bqSwDqz6Ktx1o1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6Kzs4%2FbtsGnwKBVgy%2FnRqM6JX6bqSwDqz6Ktx1o1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;920&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;920&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  구글 애드센스 신청 꿀팁! 위 예시처럼 컨텐츠가 부족할 경우 심사가 거절되는 경우가 있는데요. 한 번에 성공하지 못했다고 실망하지 마세요. 컨텐츠를 보완해서 다시 심사를 요청할 수 있습니다. 그러나! 여러 번 검토 신청할 수록 심사기간이 오래걸리고 너무 남용하면 계정 정지 패널티를 받을 수도 있다고 하니 주의하시고요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 여러분들이 운영하는 티스토리 블로그가 있다면 티스토리 블로그로 승인을 받은 후 똑같은 도메인 아래 하위 도메인(&lt;a href=&quot;http://xxx.xxx.com&quot;&gt;xxx.xxx.com&lt;/a&gt;)으로 심사를 건너뛰는 방법도 있습니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;6-5. 웹 서비스 수익화를 위해 광고 신청하기 (카카오 애드핏)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;카카오 애드핏은 구글 애드센스보다 심사가 간단하고 바로 광고를 삽입할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 아래 페이지에 접속하여 카카오 아이디로 로그인하고 카카오 애드핏 회원가입을 진행합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회원가입: &lt;a href=&quot;https://adfit.kakao.com/join&quot;&gt;https://adfit.kakao.com/join&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712217949504&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Adfit&quot; data-og-description=&quot;&quot; data-og-host=&quot;adfit.kakao.com&quot; data-og-source-url=&quot;https://adfit.kakao.com/join&quot; data-og-url=&quot;https://adfit.kakao.com/join&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://adfit.kakao.com/join&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://adfit.kakao.com/join&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Adfit&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;adfit.kakao.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;678&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVuqEF/btsGkBGzQMT/pjG9ZnPFh3ZXBjzSpRsiK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVuqEF/btsGkBGzQMT/pjG9ZnPFh3ZXBjzSpRsiK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVuqEF/btsGkBGzQMT/pjG9ZnPFh3ZXBjzSpRsiK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVuqEF%2FbtsGkBGzQMT%2FpjG9ZnPFh3ZXBjzSpRsiK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;678&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;678&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;카카오톡 챗봇 구독을 신청하시면 카카오애드핏 채널의 챗봇을 통해 계정의 리포트를 매일 수신하실 수 있습니다. 카카오톡에서 카카오애드핏 채널을 추가하신 후 구독하실 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;801&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tLaBB/btsGmNTl2ll/dPonvTBuIp2InvPfjrnKF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tLaBB/btsGmNTl2ll/dPonvTBuIp2InvPfjrnKF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tLaBB/btsGmNTl2ll/dPonvTBuIp2InvPfjrnKF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtLaBB%2FbtsGmNTl2ll%2FdPonvTBuIp2InvPfjrnKF0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1200&quot; height=&quot;801&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;801&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회원가입을 완료하면 아래와 같은 내 계정목록 화면을 보실 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;388&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RzsB1/btsGlyCNMBH/1yc4qk7MuKIFKxpAHcr8n0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RzsB1/btsGlyCNMBH/1yc4qk7MuKIFKxpAHcr8n0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RzsB1/btsGlyCNMBH/1yc4qk7MuKIFKxpAHcr8n0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRzsB1%2FbtsGlyCNMBH%2F1yc4qk7MuKIFKxpAHcr8n0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;388&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;388&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[애드핏 매체 등록하기] 버튼을 클릭하여 매체 등록을 진행합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;531&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VMbKr/btsGnHZl7bL/pzNvRTyse8Sq82KqnMjG3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VMbKr/btsGnHZl7bL/pzNvRTyse8Sq82KqnMjG3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VMbKr/btsGnHZl7bL/pzNvRTyse8Sq82KqnMjG3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVMbKr%2FbtsGnHZl7bL%2FpzNvRTyse8Sq82KqnMjG3K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;531&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;531&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같이 입력하고 [등록] 버튼을 클릭합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;매체명: 여러분의 웹서비스 이름&lt;/li&gt;
&lt;li&gt;매체 유형: Web&lt;/li&gt;
&lt;li&gt;매체 URL: 웹 서비스 도메인 주소를 입력하고 [매체 URL 변경] 버튼 클릭&lt;/li&gt;
&lt;li&gt;매체 카테고리: 생산성 - 도구 (이 부분은 컨텐츠에 따라 변경될 수 있습니다)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;768&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dg5Thl/btsGnBZp5PK/B5K4cvzpNU8RZyk2xYfJHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dg5Thl/btsGnBZp5PK/B5K4cvzpNU8RZyk2xYfJHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dg5Thl/btsGnBZp5PK/B5K4cvzpNU8RZyk2xYfJHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdg5Thl%2FbtsGnBZp5PK%2FB5K4cvzpNU8RZyk2xYfJHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;768&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;768&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;등록 완료 페이지를 확인하고 [광고단위 생성] 버튼을 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;801&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sMqvn/btsGmyhRueB/upjkCpgl4iok1tjHEOOd9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sMqvn/btsGmyhRueB/upjkCpgl4iok1tjHEOOd9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sMqvn/btsGmyhRueB/upjkCpgl4iok1tjHEOOd9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsMqvn%2FbtsGmyhRueB%2FupjkCpgl4iok1tjHEOOd9K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;801&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;801&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 만든 매체를 선택하고 [다음] 버튼을 클릭합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;629&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EbA3Y/btsGmu0N6MM/SMdnfES6JRg7Cs2kMnvIk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EbA3Y/btsGmu0N6MM/SMdnfES6JRg7Cs2kMnvIk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EbA3Y/btsGmu0N6MM/SMdnfES6JRg7Cs2kMnvIk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEbA3Y%2FbtsGmu0N6MM%2FSMdnfES6JRg7Cs2kMnvIk0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;629&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;629&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[배너]를 선택합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;584&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brtKs5/btsGl0ezJ1p/yIJ5kdAK7a6Gmvf5Da6W3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brtKs5/btsGl0ezJ1p/yIJ5kdAK7a6Gmvf5Da6W3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brtKs5/btsGl0ezJ1p/yIJ5kdAK7a6Gmvf5Da6W3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbrtKs5%2FbtsGl0ezJ1p%2FyIJ5kdAK7a6Gmvf5Da6W3K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;584&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;584&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래와 같이 입력하고 [다음] 버튼을 클릭합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;광고단위명: &amp;ldquo;배너광고&amp;rdquo;라고 입력합니다. 만약 광고를 여러개 삽입할 경우 서로 다른 이름을 사용해주세요!&lt;/li&gt;
&lt;li&gt;유형선택: 배너 광고의 크기와 유형을 선택합니다. 좌측의 미리보기로 광고 모양을 볼 수 있습니다.
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;PC: 데스크탑&lt;/li&gt;
&lt;li&gt;M: 모바일&lt;/li&gt;
&lt;li&gt;PC/M: 데스크탑/모바일 겸용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;옵션사항: (?) 물음표 아이콘 위에 마우스를 올려 옵션을 미리 볼 수 있습니다. 전부 미설정이 기본 설정입니다.&lt;/li&gt;
&lt;li&gt;특정 소재 타입 허용: 기본값으로 설정합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;926&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2YMD1/btsGl2QXnzh/3mjTT8RscbkADdC7ji7mw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2YMD1/btsGl2QXnzh/3mjTT8RscbkADdC7ji7mw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2YMD1/btsGl2QXnzh/3mjTT8RscbkADdC7ji7mw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2YMD1%2FbtsGl2QXnzh%2F3mjTT8RscbkADdC7ji7mw1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;926&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;926&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;광고 단위 생성이 완료되었습니다. 아래 쪽의 광고 스크립트를 복사하여 main.html 아래쪽에 붙여넣기 합니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;492&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfbdJG/btsGnGzmVF8/kXm09vaKyyqObe83ZEsdh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfbdJG/btsGnGzmVF8/kXm09vaKyyqObe83ZEsdh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfbdJG/btsGnGzmVF8/kXm09vaKyyqObe83ZEsdh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfbdJG%2FbtsGnGzmVF8%2FkXm09vaKyyqObe83ZEsdh0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;492&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;492&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1712218397993&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;    ... 생략 ...
    &amp;lt;script src=&quot;https://code.jquery.com/jquery-3.6.1.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;script.js&quot;&amp;gt;&amp;lt;/script&amp;gt;

    &amp;lt;script async src=&quot;https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-5332065285612783&quot;
     crossorigin=&quot;anonymous&quot;&amp;gt;&amp;lt;/script&amp;gt;

		&amp;lt;ins class=&quot;kakao_ad_area&quot; style=&quot;display:none;&quot;
				data-ad-unit = &quot;DAN-O4HovrPcjGWtusiQ&quot;
				data-ad-width = &quot;300&quot;
				data-ad-height = &quot;250&quot;&amp;gt;&amp;lt;/ins&amp;gt;
    &amp;lt;script type=&quot;text/javascript&quot; src=&quot;//t1.daumcdn.net/kas/static/ba.min.js&quot; async&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Live Preview를 통해 확인합니다. 아래와 같이 나온다면 성공입니다. 만약 바로 나오지 않더라도 당황하지 마시고 잠시 기다리신 다음 새로고침 버튼을 눌러주세요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1021&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dajNra/btsGlfpMSWU/P7tA4wgh5aRPo0GCWxbVnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dajNra/btsGlfpMSWU/P7tA4wgh5aRPo0GCWxbVnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dajNra/btsGlfpMSWU/P7tA4wgh5aRPo0GCWxbVnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdajNra%2FbtsGlfpMSWU%2FP7tA4wgh5aRPo0GCWxbVnK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1021&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1021&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;카카오 애드핏의 매체 심사는 보통 영업일 기준 3일 안에 심사가 완료됩니다. 심사가 완료되면 아래와 같은 이메일을 받으실 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;996&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/djTPT4/btsGnH57cJy/GSdt8RmYk6dMx4MKQ0NIjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/djTPT4/btsGnH57cJy/GSdt8RmYk6dMx4MKQ0NIjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/djTPT4/btsGnH57cJy/GSdt8RmYk6dMx4MKQ0NIjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdjTPT4%2FbtsGnH57cJy%2FGSdt8RmYk6dMx4MKQ0NIjK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;996&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;996&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;6-6. 나만의 웹 서비스에 광고 삽입하여 수익내기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;광고가 왼쪽에 치우쳐져 있어 보기 안좋네요. 아래 코드와 같이 입력하여 광고 위치를 수정하겠습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712218469474&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;				... 생략 ...
				&amp;lt;div class=&quot;text-center mt-3&quot;&amp;gt;
            &amp;lt;ins class=&quot;kakao_ad_area&quot; style=&quot;display:none;&quot;
            data-ad-unit = &quot;DAN-O4HovrPcjGWtusiQ&quot;
            data-ad-width = &quot;300&quot;
            data-ad-height = &quot;250&quot;&amp;gt;&amp;lt;/ins&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/main&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저장한 파일을 모두 AWS S3에 업로드합니다. 그리고 주소에 다시 접속하면 아래처럼 광고가 보이는 것을 알 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1186&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfAgYn/btsGlvlNRew/LzGQ39UKOrf2mhQg7qNKY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfAgYn/btsGlvlNRew/LzGQ39UKOrf2mhQg7qNKY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfAgYn/btsGlvlNRew/LzGQ39UKOrf2mhQg7qNKY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfAgYn%2FbtsGlvlNRew%2FLzGQ39UKOrf2mhQg7qNKY0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1186&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1186&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좌측메뉴 - 대시보드 및 광고관리 - 매체 관리 화면에서 예상 수익을 볼 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;688&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rzsVw/btsGn7Q1Ma0/zYjwW7qqk8QVkqt01iwEHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rzsVw/btsGn7Q1Ma0/zYjwW7qqk8QVkqt01iwEHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rzsVw/btsGn7Q1Ma0/zYjwW7qqk8QVkqt01iwEHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrzsVw%2FbtsGn7Q1Ma0%2FzYjwW7qqk8QVkqt01iwEHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;688&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;688&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;597&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhlDZT/btsGmL2jbpF/0cR4gBWl9KzUW5XejptYlk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhlDZT/btsGmL2jbpF/0cR4gBWl9KzUW5XejptYlk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhlDZT/btsGmL2jbpF/0cR4gBWl9KzUW5XejptYlk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhlDZT%2FbtsGmL2jbpF%2F0cR4gBWl9KzUW5XejptYlk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;597&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;597&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좌측 메뉴 - 지급 요청에서 광고 수익을 지급받을 수 있습니다. 확정 적립금이 5만원 이상인 경우부터 지급이 가능하며 매월 21일부터 말일까지 요청 가능합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;778&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yRwPN/btsGn9H5fKG/dtme1Hgj89YC0BPpKC9Qm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yRwPN/btsGn9H5fKG/dtme1Hgj89YC0BPpKC9Qm1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yRwPN/btsGn9H5fKG/dtme1Hgj89YC0BPpKC9Qm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyRwPN%2FbtsGn9H5fKG%2Fdtme1Hgj89YC0BPpKC9Qm1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;778&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;778&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래는 웹 서비스 배포 직후 하루동안의 수익을 캡쳐한 것입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;686&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0Arbv/btsGmfv0hvU/KJGW5zoyhI46kViiTPjKPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0Arbv/btsGmfv0hvU/KJGW5zoyhI46kViiTPjKPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0Arbv/btsGmfv0hvU/KJGW5zoyhI46kViiTPjKPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0Arbv%2FbtsGmfv0hvU%2FKJGW5zoyhI46kViiTPjKPK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;686&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;686&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <author>digital520</author>
      <guid isPermaLink="true">https://digital520.tistory.com/55</guid>
      <comments>https://digital520.tistory.com/55#entry55comment</comments>
      <pubDate>Thu, 4 Apr 2024 17:05:24 +0900</pubDate>
    </item>
    <item>
      <title>Part 4. 수익형 웹 서비스 구현하기(3) - 나만을 위한 일기장 만들기</title>
      <link>https://digital520.tistory.com/54</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;4-1. 일기장 미리보기&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;933&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pc39b/btsGmeRirBv/04jtEi1Rb4JRKkWcjc1eUk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pc39b/btsGmeRirBv/04jtEi1Rb4JRKkWcjc1eUk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pc39b/btsGmeRirBv/04jtEi1Rb4JRKkWcjc1eUk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fpc39b%2FbtsGmeRirBv%2F04jtEi1Rb4JRKkWcjc1eUk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;933&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;933&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4-2. 일기장의 프로그래밍적 원리 이해하기&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;사용자로부터 입력받을 값&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 날짜마다 한 줄 일기와 기분을 저장할 수 있는 일기장을 만드려고 합니다. 하루치의 일기에 저장되는 값들은 다음과 같습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;날짜 (년-월-일)&lt;/li&gt;
&lt;li&gt;한 줄 텍스트&lt;/li&gt;
&lt;li&gt;기분 (행복, 보통, 슬픔) - HTML에서 기본 제공하는 Select box
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;또는 이모지(emoji)  &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;- 오픈소스 라이브러리 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;일기장을 저장하는 방법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 JavaScript의 로컬 스토리지(Local storage)를 활용하여 사용자가 입력한 일기장을 저장할 겁니다. 로컬 스토리지는 여러분들의 브라우저에 저장되므로 다른 컴퓨터 또는 기기에서 접속할 경우 저장한 값을 볼 수 없다는 단점이 있지만 그만큼 안전하다는 장점도 있지요. 또한 로그인 기능이 필요하지 않아 사용자 접근성이 좋습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로컬 스토리지를 사용하는 방법은 다음과 같습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712214139058&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;localStorage.setItem(&quot;test-key&quot;, &quot;테스트입니다&quot;);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 코드는 test-key라는 공간(Key)에 &amp;ldquo;테스트입니다&amp;rdquo;라는 텍스트를 저장하라는 코드입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저장한 값을 꺼내서 사용하고 싶을 때는 아래와 같은 코드를 사용합니다. test-key라는 키에서 값을 꺼내 storage 변수에 저장합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712214159224&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var storage = localStorage.getItem(&quot;test-key&quot;);&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;로컬 스토리지에 저장된 값을 확인하는 방법&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발자 도구를 사용하여 로컬 스토리지에 저장된 값을 확인, 수정, 삭제할 수 있습니다. 개발자 도구를 열기 위해 Live Preview 오른쪽 상단의 메뉴 버튼을 누르고 Devtools 창 열기를 선택합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;597&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l1Y44/btsGn7J8peB/g7OlxHOt9I82QjaIX8Kga1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l1Y44/btsGn7J8peB/g7OlxHOt9I82QjaIX8Kga1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l1Y44/btsGn7J8peB/g7OlxHOt9I82QjaIX8Kga1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl1Y44%2FbtsGn7J8peB%2Fg7OlxHOt9I82QjaIX8Kga1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;597&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;597&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상단 메뉴의 Application를 선택하고 좌측 메뉴의 Storage - Local Storage - &lt;a style=&quot;color: #000000;&quot; href=&quot;http://127.0.0.1:3000/&quot; data-token-index=&quot;1&quot;&gt;&lt;span&gt;http://127.0.0.1:3000&lt;/span&gt;&lt;/a&gt; 을 선택하여 저장된 값을 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1090&quot; data-origin-height=&quot;741&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lz93y/btsGmWJoOkY/k57VY93S0yUByUtWxsvI5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lz93y/btsGmWJoOkY/k57VY93S0yUByUtWxsvI5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lz93y/btsGmWJoOkY/k57VY93S0yUByUtWxsvI5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flz93y%2FbtsGmWJoOkY%2Fk57VY93S0yUByUtWxsvI5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1090&quot; height=&quot;741&quot; data-origin-width=&quot;1090&quot; data-origin-height=&quot;741&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  가끔 저장된 값이 보이지 않을 때가 있는데 Live Preview의 버그때문에 그럴 수 있습니다. 저장된 값이 보이지 않을 때는 개발자 도구를 닫고 웹페이지의 새로고침 버튼을 누른 후 다시 실행해주세요. 만약 계속해서 보이지 않는다면 Live Preview 대신 크롬 브라우저를 사용해서 개발하셔도 무방합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;새로고침: 마우스 오른쪽 버튼 - Refresh&lt;/li&gt;
&lt;li&gt;편집: 마우스 오른쪽 버튼 - Edit&lt;/li&gt;
&lt;li&gt;삭제: 마우스 오른쪽 버튼 - Delete&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;개발자 콘솔에서 값 출력하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;거의 모든 웹 브라우저는 개발자를 위한 개발자 콘솔 기능을 지원합니다. 개발자 도구 상단 Console 메뉴에서 접근 가능합니다. 아래 코드를 입력하고 콘솔에 접속합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712214240853&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;console.log(&quot;Hello World!&quot;);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1090&quot; data-origin-height=&quot;412&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kZ29b/btsGnwDI6cJ/pqqeNbve7pyw1yvSp945f1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kZ29b/btsGnwDI6cJ/pqqeNbve7pyw1yvSp945f1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kZ29b/btsGnwDI6cJ/pqqeNbve7pyw1yvSp945f1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkZ29b%2FbtsGnwDI6cJ%2FpqqeNbve7pyw1yvSp945f1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1090&quot; height=&quot;412&quot; data-origin-width=&quot;1090&quot; data-origin-height=&quot;412&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로컬 스토리지 test-key에 저장된 값을 개발자 콘솔에서 출력할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712214271287&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var storage = localStorage.getItem(&quot;test-key&quot;);
console.log(storage);&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4-3. HTML로 일기장 틀 만들기&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;보일러플레이트&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;새로운 프로젝트를 시작할 때는 항상 보일러플레이트 코드부터 시작합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712214299637&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&amp;gt;
    &amp;lt;title&amp;gt;Hello, world!&amp;lt;/title&amp;gt;
    &amp;lt;link href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;main class=&quot;container&quot;&amp;gt;
        &amp;lt;h1&amp;gt;Hello, world!&amp;lt;/h1&amp;gt;
    &amp;lt;/main&amp;gt;

    &amp;lt;script src=&quot;https://code.jquery.com/jquery-3.6.1.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;script.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;script.js&lt;/p&gt;
&lt;pre id=&quot;code_1712214318964&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$(document).ready(function() {

});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;style.css&lt;/p&gt;
&lt;pre id=&quot;code_1712214336950&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/* 비어있음 */&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;사용자 입력 구현하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자로부터 입력받을 폼을 구현합니다. 처음보는 요소가 두 개 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712214355654&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;input type=&quot;date&quot; id=&quot;date&quot; /&amp;gt;
&amp;lt;input type=&quot;text&quot; id=&quot;text&quot; /&amp;gt;

&amp;lt;div id=&quot;emoji&quot;&amp;gt;&amp;lt;/div&amp;gt;

&amp;lt;select id=&quot;mood&quot;&amp;gt;
    &amp;lt;option value=&quot;행복&quot;&amp;gt;행복&amp;lt;/option&amp;gt;
    &amp;lt;option value=&quot;보통&quot;&amp;gt;보통&amp;lt;/option&amp;gt;
    &amp;lt;option value=&quot;슬픔&quot;&amp;gt;슬픔&amp;lt;/option&amp;gt;
&amp;lt;/select&amp;gt;

&amp;lt;button type=&quot;button&quot; id=&quot;save&quot;&amp;gt;저장하기&amp;lt;/button&amp;gt;

&amp;lt;div id=&quot;result&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;217&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KF8Rz/btsGlXCe1ys/WcIqDY7QuIK34HQTKtT9g0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KF8Rz/btsGlXCe1ys/WcIqDY7QuIK34HQTKtT9g0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KF8Rz/btsGlXCe1ys/WcIqDY7QuIK34HQTKtT9g0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKF8Rz%2FbtsGlXCe1ys%2FWcIqDY7QuIK34HQTKtT9g0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;217&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;217&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;input type=&amp;rdquo;date&amp;rdquo;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;날짜를 입력받을 수 있습니다. 달력 버튼을 눌러 사용자가 날짜를 선택할 수 있습니다.&lt;/li&gt;
&lt;li&gt;YYYY-MM-DD (e.g. 2022-11-16) 형식의 텍스트로 받을 수 있습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;380&quot; data-origin-height=&quot;617&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sOKto/btsGlyCG9em/Lja1mxMXx5edvkoU8FHB90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sOKto/btsGlyCG9em/Lja1mxMXx5edvkoU8FHB90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sOKto/btsGlyCG9em/Lja1mxMXx5edvkoU8FHB90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsOKto%2FbtsGlyCG9em%2FLja1mxMXx5edvkoU8FHB90%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;380&quot; height=&quot;617&quot; data-origin-width=&quot;380&quot; data-origin-height=&quot;617&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;select box
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;사용자로부터 여러개의 입력 중에 1개의 입력을 선택하도록 할 수 있습니다.&lt;/li&gt;
&lt;li&gt;value 인자를 통해 사용자가 선택한 값을 받아올 수 있습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;380&quot; data-origin-height=&quot;234&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cpIPeO/btsGmA0RL0O/CiVHTyLmio5hYiPeVh9tpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cpIPeO/btsGmA0RL0O/CiVHTyLmio5hYiPeVh9tpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cpIPeO/btsGmA0RL0O/CiVHTyLmio5hYiPeVh9tpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcpIPeO%2FbtsGmA0RL0O%2FCiVHTyLmio5hYiPeVh9tpk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;380&quot; height=&quot;234&quot; data-origin-width=&quot;380&quot; data-origin-height=&quot;234&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4-4. 로컬저장소를 활용한 일기장 내용 저장하기&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;사용자 입력값 받아와 출력하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;save 버튼을 누르면 date, text, mood 로부터 입력값을 받아와 result에 그대로 뿌려주겠습니다. 일기장의 내용을 임시로 p 태그로 감싸서 출력할게요.&lt;/p&gt;
&lt;pre id=&quot;code_1712214444070&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function saveHandler() {
    var date = $(&quot;#date&quot;).val();
    var text = $(&quot;#text&quot;).val();
    var mood = $(&quot;#mood&quot;).val();

    var diary = `&amp;lt;p&amp;gt;${date}: ${text} - ${mood}&amp;lt;/p&amp;gt;`;

    $(&quot;#result&quot;).html(diary);
}

$(document).ready(function() {
		$(&quot;#save&quot;).click(saveHandler);
});&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;로컬저장소에 저장하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 입력한 일기를 로컬저장소에 저장하는 방법은 간단합니다. diary 키 일기를 저장합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712214460900&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function saveHandler() {
    var date = $(&quot;#date&quot;).val();
    var text = $(&quot;#text&quot;).val();
    var mood = $(&quot;#mood&quot;).val();

    var diary = `&amp;lt;p&amp;gt;${date}: ${text} - ${mood}&amp;lt;/p&amp;gt;`;

    $(&quot;#result&quot;).html(diary);

    localStorage.setItem(&quot;diary&quot;, diary);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 하면 최근에 사용자가 입력한 값이 저장될겁니다. 개발자 도구에서 저장소를 한 번 볼까요?&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;416&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oeQ1D/btsGl3I2b4V/7AkpEkAKdF8H5rl09FKJ5k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oeQ1D/btsGl3I2b4V/7AkpEkAKdF8H5rl09FKJ5k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oeQ1D/btsGl3I2b4V/7AkpEkAKdF8H5rl09FKJ5k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoeQ1D%2FbtsGl3I2b4V%2F7AkpEkAKdF8H5rl09FKJ5k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;416&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;416&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저장에 성공했습니다. 근데 이 방식에는 문제가 있군요. 지금의 코드는 최근 입력한 일기를 저장할 수는 있지만 과거의 일기를 함께 저장하지는 못합니다. 이 문제는 나중에 해결하도록 하죠!&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;저장된 일기 출력하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컴퓨터를 껐다 켜도 과거의 일기를 다시 볼 수 있도록 저장된 일기를 출력할 시간입니다. localStorage의 getItem() 함수를 사용하여 일기를 가져옵니다. 그리고 result에 출력합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  saveHandler() 함수 안의 diary 변수에서 var를 삭제합니다. 그리고 최상단에 diary 변수를 빈칸으로 정의합니다. 이렇게 하면 diary 변수를 모든 함수에서 사용할 수 있도록 설정하는 방법인데 이런 변수를 &amp;ldquo;전역 변수&amp;rdquo;라고 합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712214524431&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var diary = &quot;&quot;;

function saveHandler() {
    var date = $(&quot;#date&quot;).val();
    var text = $(&quot;#text&quot;).val();
    var mood = $(&quot;#mood&quot;).val();

    diary = `&amp;lt;p&amp;gt;${date}: ${text} - ${mood}&amp;lt;/p&amp;gt;`;

    $(&quot;#result&quot;).html(diary);

    localStorage.setItem(&quot;diary&quot;, diary);
}

$(document).ready(function() {
    diary = localStorage.getItem(&quot;diary&quot;);

    $(&quot;#result&quot;).html(diary);

    $(&quot;#save&quot;).click(saveHandler);
});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 코드를 작성하면 과거의 일기가 잘 보이네요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;과거의 일기를 지우지 않고 누적시키기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 코드로 일기를 저장하고 저장된 일기를 출력시키는 것까지 완료했습니다. 문제점은 오늘 일기를 작성하면 과거의 일기가 지워지고 오늘 일기만 저장된다는 점인데요. 이 문제를 해결하는 방법은 정말 간단합니다. 일기를 저장하기전에 과거의 일기를 더해서(+) 저장하면 끝!&lt;/p&gt;
&lt;pre id=&quot;code_1712214542941&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;diary = `&amp;lt;p&amp;gt;${date}: ${text} - ${mood}&amp;lt;/p&amp;gt;` + diary;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 하면 오늘의 일기 뒤에 과거의 일기가 더해져서 저장된답니다. 이렇게 하면 최신 일기부터 위에서 아래로 보여지겠죠! 한 번 해볼까요?&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1160&quot; data-origin-height=&quot;631&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPs0TM/btsGoatlWto/jwV32kZamBhDWmk1IysEDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPs0TM/btsGoatlWto/jwV32kZamBhDWmk1IysEDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPs0TM/btsGoatlWto/jwV32kZamBhDWmk1IysEDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPs0TM%2FbtsGoatlWto%2FjwV32kZamBhDWmk1IysEDK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1160&quot; height=&quot;631&quot; data-origin-width=&quot;1160&quot; data-origin-height=&quot;631&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 과거 일기부터 위에서 보고싶다면 아래와 같이 코드를 수정합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712214605071&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;diary = diary + `&amp;lt;p&amp;gt;${date}: ${text} - ${mood}&amp;lt;/p&amp;gt;`;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;null 예외 처리하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 스크린샷에서도 볼 수 있지만 위의 코드로 처음 일기를 작성할 경우 null 값이 가장 처음에 들어가는 것을 볼 수 있습니다. null 값이 저장되는 이유는 첫 일기 작성 전에 localStorage.getItem(&amp;rdquo;diary&amp;rdquo;) 코드로 과거의 일기를 불러올 때 로컬스토리지에 저장된 값이 하나도 없어서 생기는 문제인데요. 이 문제를 해결하기 위해 아래와 같이 코드를 작성합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712214626985&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$(document).ready(function() {
    diary = localStorage.getItem(&quot;diary&quot;);

    if (diary == null) {
        diary = &quot;&quot;;
    }

    $(&quot;#result&quot;).html(diary);

    $(&quot;#save&quot;).click(saveHandler);
});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 코드&lt;/p&gt;
&lt;pre id=&quot;code_1712214661395&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&amp;gt;
    &amp;lt;title&amp;gt;일기장&amp;lt;/title&amp;gt;
    &amp;lt;link href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;main class=&quot;container&quot;&amp;gt;
        &amp;lt;h1&amp;gt;일기장&amp;lt;/h1&amp;gt;

        &amp;lt;input type=&quot;date&quot; id=&quot;date&quot; /&amp;gt;
        &amp;lt;input type=&quot;text&quot; id=&quot;text&quot; /&amp;gt;

        &amp;lt;select id=&quot;mood&quot;&amp;gt;
            &amp;lt;option value=&quot;행복&quot;&amp;gt;행복&amp;lt;/option&amp;gt;
            &amp;lt;option value=&quot;보통&quot;&amp;gt;보통&amp;lt;/option&amp;gt;
            &amp;lt;option value=&quot;슬픔&quot;&amp;gt;슬픔&amp;lt;/option&amp;gt;
        &amp;lt;/select&amp;gt;

        &amp;lt;button type=&quot;button&quot; id=&quot;save&quot;&amp;gt;저장하기&amp;lt;/button&amp;gt;

        &amp;lt;div id=&quot;result&quot;&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/main&amp;gt;

    &amp;lt;script src=&quot;https://code.jquery.com/jquery-3.6.1.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;script.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1712214688192&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var diary = &quot;&quot;;

function saveHandler() {
    var date = $(&quot;#date&quot;).val();
    var text = $(&quot;#text&quot;).val();
    var mood = $(&quot;#mood&quot;).val();

    diary = `&amp;lt;p&amp;gt;${date}: ${text} - ${mood}&amp;lt;/p&amp;gt;` + diary;

    $(&quot;#result&quot;).html(diary);

    localStorage.setItem(&quot;diary&quot;, diary);
}

$(document).ready(function() {
    diary = localStorage.getItem(&quot;diary&quot;);

    if (diary == null) {
        diary = &quot;&quot;;
    }

    $(&quot;#result&quot;).html(diary);

    $(&quot;#save&quot;).click(saveHandler);
});&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4-5. Bootstrap을 활용한 일기장 디자인 꾸미기&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입력 꾸미기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는 Bootstrap의 Floating labels를 이용하여 멋드러지게 꾸며보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Floating labels 문서: &lt;a href=&quot;https://getbootstrap.com/docs/5.2/forms/floating-labels/&quot;&gt;https://getbootstrap.com/docs/5.2/forms/floating-labels/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712214701621&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Floating labels&quot; data-og-description=&quot;Create beautifully simple form labels that float over your input fields.&quot; data-og-host=&quot;getbootstrap.com&quot; data-og-source-url=&quot;https://getbootstrap.com/docs/5.2/forms/floating-labels/&quot; data-og-url=&quot;https://getbootstrap.com/docs/5.2/forms/floating-labels/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bF8fj1/hyVJY51GH0/QA2OmcONb2hOxYECbpwePK/img.png?width=2000&amp;amp;height=1000&amp;amp;face=0_0_2000_1000&quot;&gt;&lt;a href=&quot;https://getbootstrap.com/docs/5.2/forms/floating-labels/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://getbootstrap.com/docs/5.2/forms/floating-labels/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bF8fj1/hyVJY51GH0/QA2OmcONb2hOxYECbpwePK/img.png?width=2000&amp;amp;height=1000&amp;amp;face=0_0_2000_1000');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Floating labels&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Create beautifully simple form labels that float over your input fields.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;getbootstrap.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1712214708487&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;row g-2 mb-3&quot;&amp;gt;
    &amp;lt;div class=&quot;col-md&quot;&amp;gt;
        &amp;lt;div class=&quot;form-floating&quot;&amp;gt;
            &amp;lt;input type=&quot;date&quot; class=&quot;form-control&quot; id=&quot;date&quot;&amp;gt;
            &amp;lt;label for=&quot;date&quot;&amp;gt;오늘 날짜를 입력해주세요&amp;lt;/label&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div class=&quot;col-md&quot;&amp;gt;
        &amp;lt;div class=&quot;form-floating&quot;&amp;gt;
            &amp;lt;select class=&quot;form-select&quot; id=&quot;mood&quot;&amp;gt;
                &amp;lt;option value=&quot;행복&quot;&amp;gt;행복&amp;lt;/option&amp;gt;
                &amp;lt;option value=&quot;보통&quot;&amp;gt;보통&amp;lt;/option&amp;gt;
                &amp;lt;option value=&quot;슬픔&quot;&amp;gt;슬픔&amp;lt;/option&amp;gt;
            &amp;lt;/select&amp;gt;
            &amp;lt;label for=&quot;mood&quot;&amp;gt;오늘 기분은 어땠나요?&amp;lt;/label&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;div class=&quot;form-floating mb-3&quot;&amp;gt;
    &amp;lt;input type=&quot;text&quot; class=&quot;form-control&quot; id=&quot;text&quot;&amp;gt;
    &amp;lt;label for=&quot;text&quot;&amp;gt;오늘 있었던 일을 기록하세요&amp;lt;/label&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;button type=&quot;button&quot; id=&quot;save&quot; class=&quot;btn btn-primary&quot;&amp;gt;저장하기&amp;lt;/button&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;611&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dvwo3x/btsGkBT3Qcf/sKMqjWMu40KkRHoV6FbkS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dvwo3x/btsGkBT3Qcf/sKMqjWMu40KkRHoV6FbkS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dvwo3x/btsGkBT3Qcf/sKMqjWMu40KkRHoV6FbkS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdvwo3x%2FbtsGkBT3Qcf%2FsKMqjWMu40KkRHoV6FbkS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;611&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;611&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기록 꾸미기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기록 부분은 List group의 Custom content로 꾸며보겠습니다. 주의해야 할 점은 일기장 기록의 경우 JavaScript 부분의 코드 수정도 필요하단 점 잊지마시구요. index.html 에 미리 작성한 후 script.js로 옯기시면 편합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;List group - Custom content 문서: &lt;a href=&quot;https://getbootstrap.com/docs/5.2/components/list-group/#custom-content&quot;&gt;https://getbootstrap.com/docs/5.2/components/list-group/#custom-content&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712214737461&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;List group&quot; data-og-description=&quot;List groups are a flexible and powerful component for displaying a series of content. Modify and extend them to support just about any content within.&quot; data-og-host=&quot;getbootstrap.com&quot; data-og-source-url=&quot;https://getbootstrap.com/docs/5.2/components/list-group/#custom-content&quot; data-og-url=&quot;https://getbootstrap.com/docs/5.2/components/list-group/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cWebFh/hyVJ1hoKAs/rMcUbJHnWDPiCYlqQGFr90/img.png?width=2000&amp;amp;height=1000&amp;amp;face=0_0_2000_1000&quot;&gt;&lt;a href=&quot;https://getbootstrap.com/docs/5.2/components/list-group/#custom-content&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://getbootstrap.com/docs/5.2/components/list-group/#custom-content&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cWebFh/hyVJ1hoKAs/rMcUbJHnWDPiCYlqQGFr90/img.png?width=2000&amp;amp;height=1000&amp;amp;face=0_0_2000_1000');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;List group&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;List groups are a flexible and powerful component for displaying a series of content. Modify and extend them to support just about any content within.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;getbootstrap.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본 List group 코드&lt;/p&gt;
&lt;pre id=&quot;code_1712214742904&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;list-group&quot; id=&quot;result&quot;&amp;gt;
    &amp;lt;a href=&quot;#&quot; class=&quot;list-group-item list-group-item-action&quot; aria-current=&quot;true&quot;&amp;gt;
        &amp;lt;div class=&quot;d-flex w-100 justify-content-between&quot;&amp;gt;
            &amp;lt;h5 class=&quot;mb-1&quot;&amp;gt;List group item heading&amp;lt;/h5&amp;gt;
            &amp;lt;small&amp;gt;3 days ago&amp;lt;/small&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;small&amp;gt;And some small print.&amp;lt;/small&amp;gt;
    &amp;lt;/a&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;index.html&lt;/p&gt;
&lt;pre id=&quot;code_1712214776924&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;list-group&quot; id=&quot;result&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;script.js&lt;/p&gt;
&lt;pre id=&quot;code_1712214815939&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;diary = `&amp;lt;a href=&quot;#&quot; class=&quot;list-group-item list-group-item-action&quot; aria-current=&quot;true&quot;&amp;gt;
    &amp;lt;div class=&quot;d-flex w-100 justify-content-between&quot;&amp;gt;
        &amp;lt;h5 class=&quot;mb-1&quot;&amp;gt;${text}&amp;lt;/h5&amp;gt;
        &amp;lt;small&amp;gt;${date}&amp;lt;/small&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;small&amp;gt;${mood}&amp;lt;/small&amp;gt;
&amp;lt;/a&amp;gt;` + diary;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1111&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cRGiU8/btsGlT0Ywfk/8L8kryWmCWULkZ2kIlHlik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cRGiU8/btsGlT0Ywfk/8L8kryWmCWULkZ2kIlHlik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cRGiU8/btsGlT0Ywfk/8L8kryWmCWULkZ2kIlHlik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcRGiU8%2FbtsGlT0Ywfk%2F8L8kryWmCWULkZ2kIlHlik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1111&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1111&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 코드&lt;/p&gt;
&lt;pre id=&quot;code_1712214936582&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&amp;gt;
    &amp;lt;title&amp;gt;일기장&amp;lt;/title&amp;gt;
    &amp;lt;link href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;main class=&quot;container&quot;&amp;gt;
        &amp;lt;h1&amp;gt;일기장&amp;lt;/h1&amp;gt;

        &amp;lt;div class=&quot;row g-2 mb-3&quot;&amp;gt;
            &amp;lt;div class=&quot;col-md&quot;&amp;gt;
                &amp;lt;div class=&quot;form-floating&quot;&amp;gt;
                    &amp;lt;input type=&quot;date&quot; class=&quot;form-control&quot; id=&quot;date&quot;&amp;gt;
                    &amp;lt;label for=&quot;date&quot;&amp;gt;오늘 날짜를 입력해주세요&amp;lt;/label&amp;gt;
                &amp;lt;/div&amp;gt;
            &amp;lt;/div&amp;gt;
            &amp;lt;div class=&quot;col-md&quot;&amp;gt;
                &amp;lt;div class=&quot;form-floating&quot;&amp;gt;
                    &amp;lt;select class=&quot;form-select&quot; id=&quot;mood&quot;&amp;gt;
                        &amp;lt;option value=&quot;행복&quot;&amp;gt;행복&amp;lt;/option&amp;gt;
                        &amp;lt;option value=&quot;보통&quot;&amp;gt;보통&amp;lt;/option&amp;gt;
                        &amp;lt;option value=&quot;슬픔&quot;&amp;gt;슬픔&amp;lt;/option&amp;gt;
                    &amp;lt;/select&amp;gt;
                    &amp;lt;label for=&quot;mood&quot;&amp;gt;오늘 기분은 어땠나요?&amp;lt;/label&amp;gt;
                &amp;lt;/div&amp;gt;
            &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;

        &amp;lt;div class=&quot;form-floating mb-3&quot;&amp;gt;
            &amp;lt;input type=&quot;text&quot; class=&quot;form-control&quot; id=&quot;text&quot;&amp;gt;
            &amp;lt;label for=&quot;text&quot;&amp;gt;오늘 있었던 일을 기록하세요&amp;lt;/label&amp;gt;
        &amp;lt;/div&amp;gt;

        &amp;lt;button type=&quot;button&quot; id=&quot;save&quot; class=&quot;btn btn-primary mb-3&quot;&amp;gt;저장하기&amp;lt;/button&amp;gt;

        &amp;lt;div class=&quot;list-group&quot; id=&quot;result&quot;&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/main&amp;gt;

    &amp;lt;script src=&quot;https://code.jquery.com/jquery-3.6.1.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;script.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;script.js&lt;/p&gt;
&lt;pre id=&quot;code_1712214986772&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var diary = &quot;&quot;;

function saveHandler() {
    var date = $(&quot;#date&quot;).val();
    var text = $(&quot;#text&quot;).val();
    var mood = $(&quot;#mood&quot;).val();

    diary = `&amp;lt;a href=&quot;#&quot; class=&quot;list-group-item list-group-item-action&quot; aria-current=&quot;true&quot;&amp;gt;
        &amp;lt;div class=&quot;d-flex w-100 justify-content-between&quot;&amp;gt;
            &amp;lt;h5 class=&quot;mb-1&quot;&amp;gt;${text}&amp;lt;/h5&amp;gt;
            &amp;lt;small&amp;gt;${date}&amp;lt;/small&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;small&amp;gt;${mood}&amp;lt;/small&amp;gt;
    &amp;lt;/a&amp;gt;` + diary;

    $(&quot;#result&quot;).html(diary);

    localStorage.setItem(&quot;diary&quot;, diary);
}

$(document).ready(function() {
    diary = localStorage.getItem(&quot;diary&quot;);

    if (diary == null) {
        diary = &quot;&quot;;
    }

    $(&quot;#result&quot;).html(diary);

    $(&quot;#save&quot;).click(saveHandler);
});&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4-6. 오픈소스 라이브러리 사용하기&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;오픈소스 라이브러리 검색하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 일기에 기분을 쓸 때 그 날의 기분을 행복, 보통, 슬픔으로 표현했는데 이것을 이모지( &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; )로 표현할 수 있다면 더 멋지겠죠? 다른 사람들이 만들어놓은 오픈소스 라이브러리를 검색하여 만들어보겠습니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구글에 &amp;ldquo;jquery emoji rating plugin&amp;rdquo;이라고 검색합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 상단에 나오는 Basic Emoji Rating Plugin For jQuery - EmojiRating 글에 들어가보도록 하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;플러그인 페이지: &lt;a href=&quot;https://www.jqueryscript.net/other/Emoji-Rating-Plugin-jQuery.html&quot;&gt;https://www.jqueryscript.net/other/Emoji-Rating-Plugin-jQuery.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712215041922&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Basic Emoji Rating Plugin For jQuery - EmojiRating&quot; data-og-description=&quot;EmojiRating is a small yet customizable jQuery product/post/article rating plugin that uses Emoticons for rating symbols.&quot; data-og-host=&quot;www.jqueryscript.net&quot; data-og-source-url=&quot;https://www.jqueryscript.net/other/Emoji-Rating-Plugin-jQuery.html&quot; data-og-url=&quot;https://www.jqueryscript.net/other/Emoji-Rating-Plugin-jQuery.html&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/u25dj/hyVJS5NPwb/5Bcu7q6ELk4KO59NQUNRZ0/img.jpg?width=426&amp;amp;height=316&amp;amp;face=0_0_426_316,https://scrap.kakaocdn.net/dn/OvHrj/hyVJT4ICA2/R2fGSCErKDXnBF7a0zBnGK/img.jpg?width=426&amp;amp;height=316&amp;amp;face=0_0_426_316&quot;&gt;&lt;a href=&quot;https://www.jqueryscript.net/other/Emoji-Rating-Plugin-jQuery.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.jqueryscript.net/other/Emoji-Rating-Plugin-jQuery.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/u25dj/hyVJS5NPwb/5Bcu7q6ELk4KO59NQUNRZ0/img.jpg?width=426&amp;amp;height=316&amp;amp;face=0_0_426_316,https://scrap.kakaocdn.net/dn/OvHrj/hyVJT4ICA2/R2fGSCErKDXnBF7a0zBnGK/img.jpg?width=426&amp;amp;height=316&amp;amp;face=0_0_426_316');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Basic Emoji Rating Plugin For jQuery - EmojiRating&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;EmojiRating is a small yet customizable jQuery product/post/article rating plugin that uses Emoticons for rating symbols.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.jqueryscript.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 플러그인은 마우스로 이모지를 선택하여 기분을 표현할 수 있는 훌륭한 플러그인이네요. 적용하는 방법도 나와있고 &amp;ldquo;Go to website&amp;rdquo; 버튼을 눌러 소스코드를 확인할 수도 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소스코드: &lt;a href=&quot;https://github.com/mrmins/EmojiRaiting&quot;&gt;https://github.com/mrmins/EmojiRaiting&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;emoji.js 파일 또는 emoji.min.js 파일을 눌러 다운로드합니다. 그리고 그 파일을 우리가 만든 part4 폴더로 복사합니다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;308&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/u7y9W/btsGnLN7Kuw/n7NqJKkGs3a1dnyrkU53zK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/u7y9W/btsGnLN7Kuw/n7NqJKkGs3a1dnyrkU53zK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/u7y9W/btsGnLN7Kuw/n7NqJKkGs3a1dnyrkU53zK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu7y9W%2FbtsGnLN7Kuw%2Fn7NqJKkGs3a1dnyrkU53zK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;308&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;308&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  emoji.js 와 emoji.min.js 파일의 내용은 완전히 동일합니다. 차이가 있다면 emoji.min.js는 압축을 해서 용량이 더 작아요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;이모지 플러그인 적용하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이모지 플러그인을 불러오기 위해 아래쪽에 다음과 같이 작성합니다. &lt;b&gt;(순서 중요!)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1712215457773&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;script src=&quot;https://code.jquery.com/jquery-3.6.1.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&quot;emoji.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&quot;script.js&quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;GitHub에 나와있는 문서를 참고하여 아래와 같이 코드를 작성합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712215481735&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;row g-2 mb-3&quot;&amp;gt;
    &amp;lt;div class=&quot;col-md&quot;&amp;gt;
        &amp;lt;div class=&quot;form-floating&quot;&amp;gt;
            &amp;lt;input type=&quot;date&quot; class=&quot;form-control&quot; id=&quot;date&quot;&amp;gt;
            &amp;lt;label for=&quot;date&quot;&amp;gt;오늘 날짜를 입력해주세요&amp;lt;/label&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div class=&quot;col-md&quot;&amp;gt;
        &amp;lt;small style=&quot;color: gray;&quot;&amp;gt;오늘 기분은 어땠나요?&amp;lt;/small&amp;gt;
        &amp;lt;div id=&quot;emoji&quot;&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;script.js&lt;/p&gt;
&lt;pre id=&quot;code_1712215514699&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$(document).ready(function() {
    $(&quot;#emoji&quot;).emoji();

		... 생략 ...
});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;435&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7mpUX/btsGmf3KKV3/jHT9kJ84qgYGL3YZW1MXf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7mpUX/btsGmf3KKV3/jHT9kJ84qgYGL3YZW1MXf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7mpUX/btsGmf3KKV3/jHT9kJ84qgYGL3YZW1MXf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7mpUX%2FbtsGmf3KKV3%2FjHT9kJ84qgYGL3YZW1MXf0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;435&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;435&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;원하는 이모지로 바꾸기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러분들이 원하는 이모지로 바꿀 수 있는 기능이 있습니다. 먼저 아래와 같이 작성하고 emojis 변수안에 있는 이모지를 바꿔줍니다. 아래 사이트에서 이모지를 복사할 수 있습니다. 여러분들이 원하는 이모지로 바꿔보세요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Get Emoji: &lt;a href=&quot;https://getemoji.com/&quot;&gt;https://getemoji.com/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712215673478&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;GetEmoji - Copy &amp;amp; Paste All Emojis From The Emoji Keyboard - No apps required&quot; data-og-description=&quot;✂️&amp;nbsp;Copy and  &amp;nbsp;Paste Emoji   No&amp;nbsp;apps&amp;nbsp;required Emojis are supported on iOS, Android, macOS, Windows, Linux and ChromeOS. Copy and paste emojis for Twitter, Facebook, Slack, Instagram, Snapchat, Slack, GitHub, Instagram, WhatsApp and more....&quot; data-og-host=&quot;getemoji.com&quot; data-og-source-url=&quot;https://getemoji.com/&quot; data-og-url=&quot;https://getemoji.com/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://getemoji.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://getemoji.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GetEmoji - Copy &amp;amp; Paste All Emojis From The Emoji Keyboard - No apps required&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;✂️&amp;nbsp;Copy and  &amp;nbsp;Paste Emoji   No&amp;nbsp;apps&amp;nbsp;required Emojis are supported on iOS, Android, macOS, Windows, Linux and ChromeOS. Copy and paste emojis for Twitter, Facebook, Slack, Instagram, Snapchat, Slack, GitHub, Instagram, WhatsApp and more....&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;getemoji.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1712215683581&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var emojis = [&quot; &quot;,&quot; &quot;,&quot; &quot;,&quot; &quot;,&quot;❤️&quot;]

... 생략 ...

$(document).ready(function() {
    $(&quot;#emoji&quot;).emoji({
        emojis: emojis
    });

... 생략 ...&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;348&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJT0X0/btsGlX3lCow/ICsTvOjd1HjGOKhik1iQ00/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJT0X0/btsGlX3lCow/ICsTvOjd1HjGOKhik1iQ00/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJT0X0/btsGlX3lCow/ICsTvOjd1HjGOKhik1iQ00/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJT0X0%2FbtsGlX3lCow%2FICsTvOjd1HjGOKhik1iQ00%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;348&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;348&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기본 이모지는 다음과 같습니다&lt;/p&gt;
&lt;pre id=&quot;code_1712215752812&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var emojis = [&quot; &quot;,&quot; &quot;,&quot; &quot;,&quot; &quot;,&quot; &quot;];&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;이모지를 클릭했을 때 기분값 저장하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이모지가 화면에 출력되고 여러분들 마음대로 선택할 수 있다면 라이브러리 적용은 완료되었습니다. 이제 이모지로부터 값을 전달받아 일기가 저장될 때 로컬스토리에 함께 저장하면 되겠죠?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 이모지를 클릭했을 때 실행할 함수를 아래와 같이 지정할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712215791683&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function emojiSelected(event, value) {
    console.log(value);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1712215804111&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$(&quot;#emoji&quot;).emoji({
    emojis: emojis,
    callback: emojiSelected
});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발자 콘솔을 열어 이모지를 클릭하면서 로그를 확인하면 1 ~ 5 사이의 값이 출력되는 것을 확인할 수 있죠. 우리는 다음과 같은 코드를 작성하여 emoji 변수에 사용자가 선택한 이모지를 저장할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712215829033&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var emoji = &quot; &quot;;

function emojiSelected(event, value) {
    if (value == 1) {
        emoji = &quot; &quot;;
    } else if (value == 2) {
        emoji = &quot; &quot;;
    } else if (value == 3) {
        emoji = &quot; &quot;;
    } else if (value == 4) {
        emoji = &quot; &quot;;
    } else if (value == 5) {
        emoji = &quot; &quot;;
    }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일기를 로컬스토리지에 저장할 때 mood 대신 emoji를 저장하도록 코드를 수정합니다. mood는 이제 필요없으니 삭제할게요!&lt;/p&gt;
&lt;pre id=&quot;code_1712215844896&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function saveHandler() {
    var date = $(&quot;#date&quot;).val();
    var text = $(&quot;#text&quot;).val();

    diary = `&amp;lt;a href=&quot;#&quot; class=&quot;list-group-item list-group-item-action&quot; aria-current=&quot;true&quot;&amp;gt;
        &amp;lt;div class=&quot;d-flex w-100 justify-content-between&quot;&amp;gt;
            &amp;lt;h5 class=&quot;mb-1&quot;&amp;gt;${text}&amp;lt;/h5&amp;gt;
            &amp;lt;small&amp;gt;${date}&amp;lt;/small&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;small&amp;gt;${emoji}&amp;lt;/small&amp;gt;
    &amp;lt;/a&amp;gt;` + diary;

    $(&quot;#result&quot;).html(diary);

    localStorage.setItem(&quot;diary&quot;, diary);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;593&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXQoNq/btsGkA1VFF7/VSjP5u2EBS8q3G428KY2zk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXQoNq/btsGkA1VFF7/VSjP5u2EBS8q3G428KY2zk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXQoNq/btsGkA1VFF7/VSjP5u2EBS8q3G428KY2zk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXQoNq%2FbtsGkA1VFF7%2FVSjP5u2EBS8q3G428KY2zk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;593&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;593&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4-7. 기타 기능 구현하기&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입력이 비어있을 때 저장하지 않도록 처리하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가 아무것도 입력하지 않은 상태로 저장하기 버튼을 누르면 아래와 같이 저장됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;581&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbJ5V6/btsGnGe38Gw/MYNE4fPmMTbnYH4OkwjHQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbJ5V6/btsGnGe38Gw/MYNE4fPmMTbnYH4OkwjHQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbJ5V6/btsGnGe38Gw/MYNE4fPmMTbnYH4OkwjHQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbJ5V6%2FbtsGnGe38Gw%2FMYNE4fPmMTbnYH4OkwjHQ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;581&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;581&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;값이 비어있을 때는 저장되지 않도록 예외처리 해주죠. saveHandler()에 아래 코드를 작성합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712216133822&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;if (date == &quot;&quot; || text == &quot;&quot;) {
    return false;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 코드는 date에 빈값이 있거나(OR) 텍스트에 빈값이 있으면 실행을 종료하라는 코드입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;저장 후 값 초기화하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금의 일기장은 값을 저장하고 난 후 마지막에 입력한 값이 그대로 남아있습니다. 사용자가 [저장하기] 버튼을 누르면 입력한 값이 초기화될 수 있도록 코드를 작성해보죠! saveHandler() 마지막에 다음과 같은 코드를 작성합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712216157192&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$(&quot;#date&quot;).val(&quot;&quot;);
$(&quot;#text&quot;).val(&quot;&quot;);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;홈페이지와 연결하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서비스를 완성했으니 main.html과 연결하겠습니다. part2, part3의 index.html에도 일기장 링크를 추가해야 합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712216184784&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;nav class=&quot;navbar navbar-expand-md navbar-dark fixed-top bg-dark&quot;&amp;gt;
    &amp;lt;div class=&quot;container-fluid&quot;&amp;gt;
        &amp;lt;a class=&quot;navbar-brand&quot; href=&quot;/main.html&quot;&amp;gt;빵형의 홈페이지&amp;lt;/a&amp;gt;
        &amp;lt;button class=&quot;navbar-toggler&quot; type=&quot;button&quot; data-bs-toggle=&quot;collapse&quot; data-bs-target=&quot;#navbarCollapse&quot; aria-controls=&quot;navbarCollapse&quot; aria-expanded=&quot;false&quot; aria-label=&quot;Toggle navigation&quot;&amp;gt;
            &amp;lt;span class=&quot;navbar-toggler-icon&quot;&amp;gt;&amp;lt;/span&amp;gt;
        &amp;lt;/button&amp;gt;
        &amp;lt;div class=&quot;collapse navbar-collapse&quot; id=&quot;navbarCollapse&quot;&amp;gt;
            &amp;lt;ul class=&quot;navbar-nav me-auto mb-2 mb-md-0&quot;&amp;gt;
                &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
                    &amp;lt;a class=&quot;nav-link&quot; aria-current=&quot;page&quot; href=&quot;/main.html&quot;&amp;gt;홈&amp;lt;/a&amp;gt;
                &amp;lt;/li&amp;gt;
                &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
                    &amp;lt;a class=&quot;nav-link&quot; href=&quot;/part2/index.html&quot;&amp;gt;사칙연산 계산기&amp;lt;/a&amp;gt;
                &amp;lt;/li&amp;gt;
                &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
                    &amp;lt;a class=&quot;nav-link active&quot; href=&quot;/part3/index.html&quot;&amp;gt;대출이자 계산기&amp;lt;/a&amp;gt;
                &amp;lt;/li&amp;gt;
                &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
                    &amp;lt;a class=&quot;nav-link active&quot; href=&quot;/part4/index.html&quot;&amp;gt;일기장&amp;lt;/a&amp;gt;
                &amp;lt;/li&amp;gt;
            &amp;lt;/ul&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/nav&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;stylecss&lt;/p&gt;
&lt;pre id=&quot;code_1712216291785&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;body {
    min-height: 75rem;
    padding-top: 4.5rem;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;933&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxUOv0/btsGmAfxgFJ/t7Nm1YJXacUbZUvkYfAPt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxUOv0/btsGmAfxgFJ/t7Nm1YJXacUbZUvkYfAPt1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxUOv0/btsGmAfxgFJ/t7Nm1YJXacUbZUvkYfAPt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxUOv0%2FbtsGmAfxgFJ%2Ft7Nm1YJXacUbZUvkYfAPt1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;933&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;933&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 코드&lt;/p&gt;
&lt;pre id=&quot;code_1712216451121&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&amp;gt;
    &amp;lt;title&amp;gt;일기장&amp;lt;/title&amp;gt;
    &amp;lt;link href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;nav class=&quot;navbar navbar-expand-md navbar-dark fixed-top bg-dark&quot;&amp;gt;
        &amp;lt;div class=&quot;container-fluid&quot;&amp;gt;
            &amp;lt;a class=&quot;navbar-brand&quot; href=&quot;/main.html&quot;&amp;gt;빵형의 홈페이지&amp;lt;/a&amp;gt;
            &amp;lt;button class=&quot;navbar-toggler&quot; type=&quot;button&quot; data-bs-toggle=&quot;collapse&quot; data-bs-target=&quot;#navbarCollapse&quot; aria-controls=&quot;navbarCollapse&quot; aria-expanded=&quot;false&quot; aria-label=&quot;Toggle navigation&quot;&amp;gt;
                &amp;lt;span class=&quot;navbar-toggler-icon&quot;&amp;gt;&amp;lt;/span&amp;gt;
            &amp;lt;/button&amp;gt;
            &amp;lt;div class=&quot;collapse navbar-collapse&quot; id=&quot;navbarCollapse&quot;&amp;gt;
                &amp;lt;ul class=&quot;navbar-nav me-auto mb-2 mb-md-0&quot;&amp;gt;
                    &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
                        &amp;lt;a class=&quot;nav-link&quot; aria-current=&quot;page&quot; href=&quot;/main.html&quot;&amp;gt;홈&amp;lt;/a&amp;gt;
                    &amp;lt;/li&amp;gt;
                    &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
                        &amp;lt;a class=&quot;nav-link&quot; href=&quot;/part2/index.html&quot;&amp;gt;사칙연산 계산기&amp;lt;/a&amp;gt;
                    &amp;lt;/li&amp;gt;
                    &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
                        &amp;lt;a class=&quot;nav-link&quot; href=&quot;/part3/index.html&quot;&amp;gt;대출이자 계산기&amp;lt;/a&amp;gt;
                    &amp;lt;/li&amp;gt;
                    &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
                        &amp;lt;a class=&quot;nav-link active&quot; href=&quot;/part4/index.html&quot;&amp;gt;일기장&amp;lt;/a&amp;gt;
                    &amp;lt;/li&amp;gt;
                &amp;lt;/ul&amp;gt;
            &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/nav&amp;gt;

    &amp;lt;main class=&quot;container&quot;&amp;gt;
        &amp;lt;h1&amp;gt;일기장&amp;lt;/h1&amp;gt;

        &amp;lt;div class=&quot;row g-2 mb-3&quot;&amp;gt;
            &amp;lt;div class=&quot;col-md&quot;&amp;gt;
                &amp;lt;div class=&quot;form-floating&quot;&amp;gt;
                    &amp;lt;input type=&quot;date&quot; class=&quot;form-control&quot; id=&quot;date&quot;&amp;gt;
                    &amp;lt;label for=&quot;date&quot;&amp;gt;오늘 날짜를 입력해주세요&amp;lt;/label&amp;gt;
                &amp;lt;/div&amp;gt;
            &amp;lt;/div&amp;gt;
            &amp;lt;div class=&quot;col-md&quot;&amp;gt;
                &amp;lt;small style=&quot;color: gray;&quot;&amp;gt;오늘 기분은 어땠나요?&amp;lt;/small&amp;gt;
                &amp;lt;div id=&quot;emoji&quot;&amp;gt;&amp;lt;/div&amp;gt;
            &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;

        &amp;lt;div class=&quot;form-floating mb-3&quot;&amp;gt;
            &amp;lt;input type=&quot;text&quot; class=&quot;form-control&quot; id=&quot;text&quot;&amp;gt;
            &amp;lt;label for=&quot;text&quot;&amp;gt;오늘 있었던 일을 기록하세요&amp;lt;/label&amp;gt;
        &amp;lt;/div&amp;gt;

        &amp;lt;button type=&quot;button&quot; id=&quot;save&quot; class=&quot;btn btn-primary mb-3&quot;&amp;gt;저장하기&amp;lt;/button&amp;gt;

        &amp;lt;div class=&quot;list-group&quot; id=&quot;result&quot;&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/main&amp;gt;

    &amp;lt;script src=&quot;https://code.jquery.com/jquery-3.6.1.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;emoji.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;script.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;script.js&lt;/p&gt;
&lt;pre id=&quot;code_1712216487361&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var emoji = &quot; &quot;;
var emojis = [&quot; &quot;,&quot; &quot;,&quot; &quot;,&quot; &quot;,&quot; &quot;];
var diary = &quot;&quot;;

function emojiSelected(event, value) {
    if (value == 1) {
        emoji = &quot; &quot;;
    } else if (value == 2) {
        emoji = &quot; &quot;;
    } else if (value == 3) {
        emoji = &quot; &quot;;
    } else if (value == 4) {
        emoji = &quot; &quot;;
    } else if (value == 5) {
        emoji = &quot; &quot;;
    }
}

function saveHandler() {
    var date = $(&quot;#date&quot;).val();
    var text = $(&quot;#text&quot;).val();

    if (date == &quot;&quot; || text == &quot;&quot;) {
        return false;
    }

    diary = `&amp;lt;a href=&quot;#&quot; class=&quot;list-group-item list-group-item-action&quot; aria-current=&quot;true&quot;&amp;gt;
        &amp;lt;div class=&quot;d-flex w-100 justify-content-between&quot;&amp;gt;
            &amp;lt;h5 class=&quot;mb-1&quot;&amp;gt;${text}&amp;lt;/h5&amp;gt;
            &amp;lt;small&amp;gt;${date}&amp;lt;/small&amp;gt;
        &amp;lt;/div&amp;gt;
        &amp;lt;small&amp;gt;${emoji}&amp;lt;/small&amp;gt;
    &amp;lt;/a&amp;gt;` + diary;

    $(&quot;#result&quot;).html(diary);

    localStorage.setItem(&quot;diary&quot;, diary);

    $(&quot;#date&quot;).val(&quot;&quot;);
    $(&quot;#text&quot;).val(&quot;&quot;);
}

$(document).ready(function() {
    $(&quot;#emoji&quot;).emoji({
        emojis: emojis,
        callback: emojiSelected
    });

    diary = localStorage.getItem(&quot;diary&quot;);

    if (diary == null) {
        diary = &quot;&quot;;
    }

    $(&quot;#result&quot;).html(diary);

    $(&quot;#save&quot;).click(saveHandler);
});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;style.css&lt;/p&gt;
&lt;pre id=&quot;code_1712216509501&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;body {
    min-height: 75rem;
    padding-top: 4.5rem;
}&lt;/code&gt;&lt;/pre&gt;</description>
      <author>digital520</author>
      <guid isPermaLink="true">https://digital520.tistory.com/54</guid>
      <comments>https://digital520.tistory.com/54#entry54comment</comments>
      <pubDate>Thu, 4 Apr 2024 16:14:56 +0900</pubDate>
    </item>
    <item>
      <title>Part 3. 수익형 웹 서비스 구현하기(2) - 대출 이자 계산기 만들기</title>
      <link>https://digital520.tistory.com/53</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;3-1. 대출 이자 계산기 미리보기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파트2에서 만든 계산기를 응용하여 이번엔 대출 이자 계산기를 만들어보도록 하겠습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;558&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/DUWo9/btsGkAtjpDW/MbKQudx3jLwjFASqElNbO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/DUWo9/btsGkAtjpDW/MbKQudx3jLwjFASqElNbO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/DUWo9/btsGkAtjpDW/MbKQudx3jLwjFASqElNbO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FDUWo9%2FbtsGkAtjpDW%2FMbKQudx3jLwjFASqElNbO1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;558&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;558&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3-2. 대출 이자 계산기의 프로그래밍적 원리 이해하기&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;원리금균등상환 방식&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 원리금균등상환 방식의 대출 이자 계산기를 만들겁니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  대출 원금과 이자를 더한 금액을 만기일까지 균등하게 상환하는 대출 상환 방식입니다. 가장 일반적인 상환 방식으로 매달 내야 하는 납부금이 동일하기에 자금 관리 면에서 유리한 방식이죠!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시를 하나 들어봅시다. 우리가 1000만원을 연 10%의 금리로 12개월 원리금균등상환으로 대출받았다고 해봅시다. 단순히 1000만원의 10%이니 이자가 100만원이다!라고 생각할수도 있지만 실제로는 그렇지 않습니다. 매달 지날 수록 원금이 줄어들기 때문에 이자도 조금씩 줄어들기 때문이죠. 따라서 계산하는 방식이 까다롭습니다. 계산 방식이 까다롭기 때문에 사람들이 인터넷에 많이 검색할 것이고, 따라서 이런 계산기를 만들면 사람들이 많이 사용할 가능성이 높겠죠?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-04-04 105739.png&quot; data-origin-width=&quot;1182&quot; data-origin-height=&quot;147&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBzdMk/btsGjXijFPy/d6vIjMcW2gmihnIWUWKDxk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBzdMk/btsGjXijFPy/d6vIjMcW2gmihnIWUWKDxk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBzdMk/btsGjXijFPy/d6vIjMcW2gmihnIWUWKDxk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBzdMk%2FbtsGjXijFPy%2Fd6vIjMcW2gmihnIWUWKDxk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1182&quot; height=&quot;147&quot; data-filename=&quot;스크린샷 2024-04-04 105739.png&quot; data-origin-width=&quot;1182&quot; data-origin-height=&quot;147&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좀 복잡하죠? 하지만 하나하나 그대로 따라하면 그렇게 어려울 것은 없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 예로 다시 돌아가서 정리하면:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;원금 : 10,000,000만원&lt;/li&gt;
&lt;li&gt;연금리 : 10% (월금리 0.833%)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;계산할때는 퍼센티지를 소수점으로 바꾼다. (100% &amp;rarr; 1.0)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;10% &amp;rarr; 0.1&lt;/li&gt;
&lt;li&gt;0.833% &amp;rarr; 0.00833&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;상환기간 : 12개월&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 수식에 따라 넣어보면:&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-04-04 105653.png&quot; data-origin-width=&quot;1186&quot; data-origin-height=&quot;143&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/umAFY/btsGlVwYfqI/047mqintakV7VUueneIEh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/umAFY/btsGlVwYfqI/047mqintakV7VUueneIEh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/umAFY/btsGlVwYfqI/047mqintakV7VUueneIEh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FumAFY%2FbtsGlVwYfqI%2F047mqintakV7VUueneIEh0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1186&quot; height=&quot;143&quot; data-filename=&quot;스크린샷 2024-04-04 105653.png&quot; data-origin-width=&quot;1186&quot; data-origin-height=&quot;143&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계산기로 계산해보면 월 상환액은 약 879,158원이라는 것을 알 수 있죠. (계산 순서에 주의하세요!)&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;사용자 입력&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 사용자에게서 3개를 입력받을 예정입니다. 이것들을 입력받기위한 텍스트박스 3개가 필요하겠죠? 그리고 계산하기 버튼을 눌러 계산할 수 있습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;대출금 (원)&lt;/li&gt;
&lt;li&gt;대출금리 (연 %)&lt;/li&gt;
&lt;li&gt;대출기간 (개월)&lt;/li&gt;
&lt;li&gt;계산하기 (버튼)&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3-3. HTML로 계산기 틀 만들기&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;보일러플레이트&lt;/h3&gt;
&lt;div style=&quot;background-color: #ffffff; color: #37352f; text-align: start;&quot; data-block-id=&quot;9390914a-5a1c-412b-b2d7-b16a3f9beaa0&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div&gt;
&lt;div data-content-editable-leaf=&quot;true&quot;&gt;새로운 프로젝트를 시작할 때는 항상 보일러플레이트 코드부터 시작합니다.&lt;/div&gt;
&lt;div data-content-editable-leaf=&quot;true&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;index.html&lt;/p&gt;
&lt;pre id=&quot;code_1712208514837&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&amp;gt;
    &amp;lt;title&amp;gt;Hello, world!&amp;lt;/title&amp;gt;
    &amp;lt;link href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;main class=&quot;container&quot;&amp;gt;
        &amp;lt;h1&amp;gt;Hello, world!&amp;lt;/h1&amp;gt;
    &amp;lt;/main&amp;gt;

    &amp;lt;script src=&quot;https://code.jquery.com/jquery-3.6.1.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;script.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #ffffff; color: #37352f; text-align: start;&quot; data-block-id=&quot;8b679d35-c206-44c3-8613-618e9d63a651&quot;&gt;
&lt;div&gt;​&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;script.js&lt;/p&gt;
&lt;pre id=&quot;code_1712208546861&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$(document).ready(function() {

});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;style.css&lt;/p&gt;
&lt;pre id=&quot;code_1712208572128&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/* 비어있음 */&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #37352f; text-align: start;&quot; data-block-id=&quot;15fb7c07-0b75-4255-aca2-bc99ca29438c&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;h4 data-content-editable-leaf=&quot;true&quot; data-ke-size=&quot;size20&quot;&gt;Bootstrap에서 표 사용하기&lt;/h4&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #37352f; text-align: start;&quot; data-block-id=&quot;a634c4a3-63e3-4f93-817e-fcaf2c85e2c8&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div&gt;
&lt;div data-content-editable-leaf=&quot;true&quot;&gt;이번 시간에는 표(Table)를 사용하여 예쁘게 계산기를 만들어보도록 하겠습니다. 표를 이용하면 각이 딱딱 맞는 디자인을 만들 수 있죠!&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #37352f; text-align: start;&quot; data-block-id=&quot;221d986a-5b16-4a8c-9cc5-ead954e99f7c&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div&gt;
&lt;div data-content-editable-leaf=&quot;true&quot;&gt;Bootstrap 표 문서: &lt;span&gt;&lt;/span&gt;&lt;a href=&quot;https://getbootstrap.com/docs/5.2/content/tables/#overview&quot;&gt;https://getbootstrap.com/docs/5.2/content/tables/#overview&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #37352f; text-align: start;&quot; data-block-id=&quot;6608aa7e-4d38-461a-8588-d92752cbcc06&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div&gt;
&lt;div data-content-editable-leaf=&quot;true&quot;&gt;main.container안에 아래와 같이 테이블 코드를 복사+붙여넣기 합니다. thead 부분은 필요없으므로 삭제합니다.&lt;/div&gt;
&lt;div data-content-editable-leaf=&quot;true&quot;&gt;
&lt;pre id=&quot;code_1712208590218&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;table class=&quot;table&quot;&amp;gt;
    &amp;lt;tbody&amp;gt;
        &amp;lt;tr&amp;gt;
            &amp;lt;th scope=&quot;row&quot;&amp;gt;1&amp;lt;/th&amp;gt;
            &amp;lt;td&amp;gt;Mark&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;Otto&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;@mdo&amp;lt;/td&amp;gt;
        &amp;lt;/tr&amp;gt;
        &amp;lt;tr&amp;gt;
            &amp;lt;th scope=&quot;row&quot;&amp;gt;2&amp;lt;/th&amp;gt;
            &amp;lt;td&amp;gt;Jacob&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;Thornton&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;@fat&amp;lt;/td&amp;gt;
        &amp;lt;/tr&amp;gt;
        &amp;lt;tr&amp;gt;
            &amp;lt;th scope=&quot;row&quot;&amp;gt;3&amp;lt;/th&amp;gt;
            &amp;lt;td colspan=&quot;2&quot;&amp;gt;Larry the Bird&amp;lt;/td&amp;gt;
            &amp;lt;td&amp;gt;@twitter&amp;lt;/td&amp;gt;
        &amp;lt;/tr&amp;gt;
    &amp;lt;/tbody&amp;gt;
&amp;lt;/table&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;457&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/snJ75/btsGkD5cMSp/qG2klsojrEhqSmZeS6wLrk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/snJ75/btsGkD5cMSp/qG2klsojrEhqSmZeS6wLrk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/snJ75/btsGkD5cMSp/qG2klsojrEhqSmZeS6wLrk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsnJ75%2FbtsGkD5cMSp%2FqG2klsojrEhqSmZeS6wLrk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;457&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;457&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;요소 구현하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 텍스트박스로 이루어진 기본적인 요소들부터 구현해봅시다.&lt;/p&gt;
&lt;pre id=&quot;code_1712208624306&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;table class=&quot;table&quot;&amp;gt;
    &amp;lt;tbody&amp;gt;
        &amp;lt;tr&amp;gt;
            &amp;lt;th scope=&quot;row&quot;&amp;gt;대출금&amp;lt;/th&amp;gt;
            &amp;lt;td&amp;gt;
                &amp;lt;input type=&quot;text&quot; id=&quot;loan&quot;&amp;gt; 원
            &amp;lt;/td&amp;gt;
        &amp;lt;/tr&amp;gt;
        &amp;lt;tr&amp;gt;
            &amp;lt;th scope=&quot;row&quot;&amp;gt;대출금리&amp;lt;/th&amp;gt;
            &amp;lt;td&amp;gt;
                연 &amp;lt;input type=&quot;text&quot; id=&quot;interest&quot;&amp;gt; %
            &amp;lt;/td&amp;gt;
        &amp;lt;/tr&amp;gt;
        &amp;lt;tr&amp;gt;
            &amp;lt;th scope=&quot;row&quot;&amp;gt;대출기간&amp;lt;/th&amp;gt;
            &amp;lt;td&amp;gt;
                &amp;lt;input type=&quot;text&quot; id=&quot;period&quot;&amp;gt; 개월
            &amp;lt;/td&amp;gt;
        &amp;lt;/tr&amp;gt;
    &amp;lt;/tbody&amp;gt;
&amp;lt;/table&amp;gt;

&amp;lt;button type=&quot;button&quot; id=&quot;calculate&quot;&amp;gt;계산하기&amp;lt;/button&amp;gt;

&amp;lt;div id=&quot;result&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;677&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbrrNK/btsGlWQIaN4/2kkuqymT4ULvX5Cuv1qDI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbrrNK/btsGlWQIaN4/2kkuqymT4ULvX5Cuv1qDI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbrrNK/btsGlWQIaN4/2kkuqymT4ULvX5Cuv1qDI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbrrNK%2FbtsGlWQIaN4%2F2kkuqymT4ULvX5Cuv1qDI1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;677&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;677&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3-4. 원리금균등상환 계산기 만들기&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;사용자 입력 받아오기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 텍스트박스에서 사용자가 입력한 값들을 받아오는 것부터 만들어보죠. 계산하기 버튼을 클릭하면 3개의 텍스트박스에 있는 값을 불러오죠. script.js 파일에 다음과 같이 작성합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712208659442&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function calculateHandler() {
    var loan = $('#loan').val();
    var interest = $('#interest').val();
    var period = $('#period').val();

    loan = parseFloat(loan);
    interest = parseFloat(interest);
    period = parseFloat(period);
}

$(document).ready(function() {
    $('#calculate').click(calculateHandler);
});&lt;/code&gt;&lt;/pre&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;id가 calculate인 버튼을 클릭하면, calculateHandler() 함수안에 있는 코드가 실행됩니다.&lt;/li&gt;
&lt;li&gt;calculateHandler() 함수는 id가 loan, interest, period 인 텍스트박스에서 값을 가져와 각 변수에 저장합니다.&lt;/li&gt;
&lt;li&gt;마지막으로 각각의 값을 문자에서 숫자로 바꿔 저장합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;계산 전 필요한 값 정리하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 월 상환액을 계산했던 식을 다시 한 번 살펴봅시다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-04-04 135838.png&quot; data-origin-width=&quot;1164&quot; data-origin-height=&quot;131&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cSLZin/btsGmCxsX5Y/QcP7KJorDQdLaVoiYK8cF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cSLZin/btsGmCxsX5Y/QcP7KJorDQdLaVoiYK8cF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cSLZin/btsGmCxsX5Y/QcP7KJorDQdLaVoiYK8cF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcSLZin%2FbtsGmCxsX5Y%2FQcP7KJorDQdLaVoiYK8cF1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1164&quot; height=&quot;131&quot; data-filename=&quot;스크린샷 2024-04-04 135838.png&quot; data-origin-width=&quot;1164&quot; data-origin-height=&quot;131&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위의 식에서 원금, 연금리, 기간은 이미 받아왔지만 월금리는 우리가 별도로 계산해야 합니다. 월금리를 계산하는 식은 간단하죠. 단순히 연금리에서 12(개월)를 나누면 끝입니다. 따라서 우리는 월금리를 구하는 코드를 만들어 따로 저장합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712208726183&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var interestMonth = interest / 12;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;interestMonth 변수를 만들어 연금리(interest) 에서 12를 나누어 저장합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 interestMonth에는 퍼센티지 단위의 값이 저장되어 있습니다. 퍼센티지를 소수점으로 변환하기 위해 100으로 나누어줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712208745158&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var interestMonth = interest / 12 / 100;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;월 상환액 계산하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수식이 복잡하니 분자와 분모를 먼저 계산하여 나중에 나눠주는 방식으로 진행하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 분자를 구하는 식을 코드로 작성하면 아래와 같이 되겠죠?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  JavaScript에서 거듭제곱은 ** 기호로 표시합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712208787960&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var div1 = loan * interestMonth * (1 + interestMonth) ** period;&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #ffffff; color: #37352f; text-align: start;&quot; data-block-id=&quot;0626ac51-43f2-47e2-97d2-e0ae7bc8c7f1&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div&gt;
&lt;div data-content-editable-leaf=&quot;true&quot;&gt;분모를 구하는 식은 아래와 같습니다.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;pre id=&quot;code_1712208816722&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var div2 = (1 + interestMonth) ** period - 1;&lt;/code&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: #ffffff; color: #37352f; text-align: start;&quot; data-block-id=&quot;a21526eb-9544-48ea-a88b-05733244a0a7&quot;&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #37352f; text-align: start;&quot; data-block-id=&quot;3f4d5033-60ed-4007-bdcf-fabec93315a7&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div&gt;
&lt;div data-content-editable-leaf=&quot;true&quot;&gt;분자에서 분모로 나누어 최종 결과를 완성합니다.&lt;/div&gt;
&lt;div data-content-editable-leaf=&quot;true&quot;&gt;
&lt;pre id=&quot;code_1712208827432&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var result = div1 / div2;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;월 상환액 결과 표시하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;id가 result인 요소에 우리가 계산한 월 상환액을 표시합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712208853997&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$('#result').text(result);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1110&quot; data-origin-height=&quot;731&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1HF7U/btsGmBefK8S/k83ToJOHichZT6mFzagiqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1HF7U/btsGmBefK8S/k83ToJOHichZT6mFzagiqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1HF7U/btsGmBefK8S/k83ToJOHichZT6mFzagiqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1HF7U%2FbtsGmBefK8S%2Fk83ToJOHichZT6mFzagiqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1110&quot; height=&quot;731&quot; data-origin-width=&quot;1110&quot; data-origin-height=&quot;731&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;월 상환액 반올림하여 결과 표시하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과값에 소수점이 나오니 지저분합니다. 우리는 이것을 반올림하여 사용자가 보기 쉽게 표시하도록 하겠습니다. 이럴 때는 함수를 외워서 하는 것이 아니라 구글을 주로 활용합니다. 구글에 &amp;ldquo;javascript 반올림&amp;rdquo;이라고 검색하여 정보를 찾습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712208884049&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;result = Math.round(result);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;733&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dFh9z0/btsGnzG23gu/OqXAQBlu7w9lOlK1vN0Mr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dFh9z0/btsGnzG23gu/OqXAQBlu7w9lOlK1vN0Mr1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dFh9z0/btsGnzG23gu/OqXAQBlu7w9lOlK1vN0Mr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdFh9z0%2FbtsGnzG23gu%2FOqXAQBlu7w9lOlK1vN0Mr1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;733&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;733&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;사용자 친화적으로 만들기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계산한 결과가 숫자로만 나오니 약간 불친절한 느낌이 듭니다. &amp;ldquo;고객님의 월 상환액은 00000원입니다.&amp;rdquo; 등의 메시지를 함께 띄워보죠.&lt;/p&gt;
&lt;pre id=&quot;code_1712208912991&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var resultText = `고객님의 ${period}개월 동안 월 상환액은 ${result}원 입니다.`;

$('#result').text(resultText);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JavaScript에서 백틱(Backtick, `)을 사용하면 변수에 저장된 값들을 원하는 문구과 함께 출력할 수 있습니다. 변수를 표시할 때는 백틱 안에 ${변수명} 이렇게 작성해주세요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1070&quot; data-origin-height=&quot;763&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cf2oJl/btsGnIKuatk/NSnWkM7zbf8iA58Hbv7NN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cf2oJl/btsGnIKuatk/NSnWkM7zbf8iA58Hbv7NN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cf2oJl/btsGnIKuatk/NSnWkM7zbf8iA58Hbv7NN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcf2oJl%2FbtsGnIKuatk%2FNSnWkM7zbf8iA58Hbv7NN1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1070&quot; height=&quot;763&quot; data-origin-width=&quot;1070&quot; data-origin-height=&quot;763&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 코드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;index.html&lt;/p&gt;
&lt;pre id=&quot;code_1712208958358&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&amp;gt;
    &amp;lt;title&amp;gt;Hello, world!&amp;lt;/title&amp;gt;
    &amp;lt;link href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;main class=&quot;container&quot;&amp;gt;
        &amp;lt;h1&amp;gt;대출 이자 계산기&amp;lt;/h1&amp;gt;

        &amp;lt;table class=&quot;table&quot;&amp;gt;
            &amp;lt;tbody&amp;gt;
                &amp;lt;tr&amp;gt;
                    &amp;lt;th scope=&quot;row&quot;&amp;gt;대출금&amp;lt;/th&amp;gt;
                    &amp;lt;td&amp;gt;
                        &amp;lt;input type=&quot;text&quot; id=&quot;loan&quot;&amp;gt; 원
                    &amp;lt;/td&amp;gt;
                &amp;lt;/tr&amp;gt;
                &amp;lt;tr&amp;gt;
                    &amp;lt;th scope=&quot;row&quot;&amp;gt;대출금리&amp;lt;/th&amp;gt;
                    &amp;lt;td&amp;gt;
                        연 &amp;lt;input type=&quot;text&quot; id=&quot;interest&quot;&amp;gt; %
                    &amp;lt;/td&amp;gt;
                &amp;lt;/tr&amp;gt;
                &amp;lt;tr&amp;gt;
                    &amp;lt;th scope=&quot;row&quot;&amp;gt;대출기간&amp;lt;/th&amp;gt;
                    &amp;lt;td&amp;gt;
                        &amp;lt;input type=&quot;text&quot; id=&quot;period&quot;&amp;gt; 개월
                    &amp;lt;/td&amp;gt;
                &amp;lt;/tr&amp;gt;
            &amp;lt;/tbody&amp;gt;
        &amp;lt;/table&amp;gt;

        &amp;lt;button type=&quot;button&quot; id=&quot;calculate&quot;&amp;gt;계산하기&amp;lt;/button&amp;gt;

        &amp;lt;div id=&quot;result&quot;&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/main&amp;gt;

    &amp;lt;script src=&quot;https://code.jquery.com/jquery-3.6.1.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;script.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;script.js&lt;/p&gt;
&lt;pre id=&quot;code_1712208982964&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function calculateHandler() {
    var loan = $('#loan').val();
    var interest = $('#interest').val();
    var period = $('#period').val();

    loan = parseFloat(loan);
    interest = parseFloat(interest);
    period = parseFloat(period);

    var interestMonth = interest / 12 / 100;

    var div1 = loan * interestMonth * (1 + interestMonth) ** period;
    var div2 = (1 + interestMonth) ** period - 1;

    var result = div1 / div2;

    result = Math.round(result);

    var resultText = `고객님의 ${period}개월 동안 월 상환액은 ${result}원 입니다.`;

    $('#result').text(resultText);
}

$(document).ready(function() {
    $('#calculate').click(calculateHandler);
});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3-5. 사용자 편의 기능 만들기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자들이 모든 숫자를 직접 입력하려면 힘들겠죠? 우리는 사용자들을 더 편하게해서 방문율을 높이기 위해 약간의 편의 기능들을 만들겁니다. 예를 들면 이런거죠.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;782&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vO4FD/btsGnLAqFk9/lFQPa5DKLxQhaqIiKzktyK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vO4FD/btsGnLAqFk9/lFQPa5DKLxQhaqIiKzktyK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vO4FD/btsGnLAqFk9/lFQPa5DKLxQhaqIiKzktyK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvO4FD%2FbtsGnLAqFk9%2FlFQPa5DKLxQhaqIiKzktyK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;580&quot; height=&quot;782&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;782&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기업은행 인터넷뱅킹에서 송금을 하려고 금액을 입력했을 때 뜨는 팝업입니다. 금액을 직접 입력할 수도 있지만 +10만 +100만 버튼을 사용해서 더 간단하게 입력할수도 있습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;버튼 만들기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 대출금액부터 손봐줄게요. td를 하나 더 만들어 열을 추가합니다. 그 안에 3개의 버튼을 추가할게요.&lt;/p&gt;
&lt;pre id=&quot;code_1712209113727&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;td&amp;gt;
    &amp;lt;button type=&quot;button&quot; id=&quot;loan-100&quot;&amp;gt;+백만&amp;lt;/button&amp;gt;
    &amp;lt;button type=&quot;button&quot; id=&quot;loan-1000&quot;&amp;gt;+천만&amp;lt;/button&amp;gt;
    &amp;lt;button type=&quot;button&quot; id=&quot;loan-10000&quot;&amp;gt;+일억&amp;lt;/button&amp;gt;
&amp;lt;/td&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;576&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9Yv42/btsGkvl0t3q/rlhNINs0DBPjCzysYAsdWK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9Yv42/btsGkvl0t3q/rlhNINs0DBPjCzysYAsdWK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9Yv42/btsGkvl0t3q/rlhNINs0DBPjCzysYAsdWK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9Yv42%2FbtsGkvl0t3q%2FrlhNINs0DBPjCzysYAsdWK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;576&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;576&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 버튼의 id를 loan-100, loan-1000, loan-10000 으로 지정하였습니다. 먼저 loan-100을 클릭하면 100만원이 더해지도록 하죠.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;100만원 더하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;script.js 파일에 loan-100 버튼을 클릭했을 때 loan100Handler() 함수가 실행되도록 만들어줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712209141798&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$('#loan-100').click(loan100Handler);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;loan100Handler() 에서 해야하는 일은 다음과 같습니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;현재 입력되어 있는 대출금 값을 가져온다.&lt;/li&gt;
&lt;li&gt;현재 입력값에 100만원을 더한다.&lt;/li&gt;
&lt;li&gt;대출금 텍스트박스에 더한 값을 넣는다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이것을 코드로 작성하면:&lt;/p&gt;
&lt;pre id=&quot;code_1712209162011&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function loan100Handler() {
    var loan = $('#loan').val();

    loan = parseFloat(loan);

    loan = loan + 1000000;

    $('#loan').val(loan);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;val() 함수는 괄호 안쪽이 비어있을 때는 해당 id 요소의 값을 가져오고, 안쪽에 값 또는 변수를 넣었을 때는 해당 id 요소에 값을 채워넣습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 이대로는 잘 동작하지 않습니다. [+백만] 버튼을 누르면 NaN이라는 글자가 뜨죠. NaN은 Not a Number 의 약자로 &amp;ldquo;숫자가 아니다&amp;rdquo;라는 뜻입니다. 이 오류가 발생하는 이유는 현재 loan 텍스트박스에 아무것도 입력되어 있지 않아서 그런건데요. 우리는 이 에러를 해결하기 위해 예외처리를 해주어야 합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712209194949&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function loan100Handler() {
    var loan = $('#loan').val();

    if (loan == &quot;&quot;) {
        loan = 0;
    }

    loan = parseFloat(loan);

    loan = loan + 1000000;

    $('#loan').val(loan);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;loan 텍스트박스에서 값을 받아온 후 loan에 저장된 값이 빈 칸(&amp;rdquo;&amp;rdquo;)인지 확인하여 빈 칸이라면 0을 넣어주는 코드를 작성합니다. 이제 정상적으로 동작합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;다른 버튼 구현하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마찬가지로 숫자만 변경하여 천만, 일억 버튼도 만들어줍시다.&lt;/p&gt;
&lt;pre id=&quot;code_1712209222947&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function loan1000Handler() {
    var loan = $('#loan').val();

    if (loan == &quot;&quot;) {
        loan = 0;
    }

    loan = parseFloat(loan);

    loan = loan + 10000000;

    $('#loan').val(loan);
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1712209314529&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function loan10000Handler() {
    var loan = $('#loan').val();

    if (loan == &quot;&quot;) {
        loan = 0;
    }

    loan = parseFloat(loan);

    loan = loan + 100000000;

    $('#loan').val(loan);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 코드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;index.html&lt;/p&gt;
&lt;pre id=&quot;code_1712209361882&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&amp;gt;
    &amp;lt;title&amp;gt;Hello, world!&amp;lt;/title&amp;gt;
    &amp;lt;link href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;main class=&quot;container&quot;&amp;gt;
        &amp;lt;h1&amp;gt;대출 이자 계산기&amp;lt;/h1&amp;gt;

        &amp;lt;table class=&quot;table&quot;&amp;gt;
            &amp;lt;tbody&amp;gt;
                &amp;lt;tr&amp;gt;
                    &amp;lt;th scope=&quot;row&quot;&amp;gt;대출금&amp;lt;/th&amp;gt;
                    &amp;lt;td&amp;gt;
                        &amp;lt;input type=&quot;text&quot; id=&quot;loan&quot;&amp;gt; 원
                    &amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;
                        &amp;lt;button type=&quot;button&quot; id=&quot;loan-100&quot;&amp;gt;+백만&amp;lt;/button&amp;gt;
                        &amp;lt;button type=&quot;button&quot; id=&quot;loan-1000&quot;&amp;gt;+천만&amp;lt;/button&amp;gt;
                        &amp;lt;button type=&quot;button&quot; id=&quot;loan-10000&quot;&amp;gt;+일억&amp;lt;/button&amp;gt;
                    &amp;lt;/td&amp;gt;
                &amp;lt;/tr&amp;gt;
                &amp;lt;tr&amp;gt;
                    &amp;lt;th scope=&quot;row&quot;&amp;gt;대출금리&amp;lt;/th&amp;gt;
                    &amp;lt;td&amp;gt;
                        연 &amp;lt;input type=&quot;text&quot; id=&quot;interest&quot;&amp;gt; %
                    &amp;lt;/td&amp;gt;
                &amp;lt;/tr&amp;gt;
                &amp;lt;tr&amp;gt;
                    &amp;lt;th scope=&quot;row&quot;&amp;gt;대출기간&amp;lt;/th&amp;gt;
                    &amp;lt;td&amp;gt;
                        &amp;lt;input type=&quot;text&quot; id=&quot;period&quot;&amp;gt; 개월
                    &amp;lt;/td&amp;gt;
                &amp;lt;/tr&amp;gt;
            &amp;lt;/tbody&amp;gt;
        &amp;lt;/table&amp;gt;

        &amp;lt;button type=&quot;button&quot; id=&quot;calculate&quot;&amp;gt;계산하기&amp;lt;/button&amp;gt;

        &amp;lt;div id=&quot;result&quot;&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/main&amp;gt;

    &amp;lt;script src=&quot;https://code.jquery.com/jquery-3.6.1.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;script.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;script.js&lt;/p&gt;
&lt;pre id=&quot;code_1712209388147&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function calculateHandler() {
    var loan = $('#loan').val();
    var interest = $('#interest').val();
    var period = $('#period').val();

    loan = parseFloat(loan);
    interest = parseFloat(interest);
    period = parseFloat(period);

    var interestMonth = interest / 12 / 100;

    var div1 = loan * interestMonth * (1 + interestMonth) ** period;
    var div2 = (1 + interestMonth) ** period - 1;

    var result = div1 / div2;

    result = Math.round(result);

    var resultText = `고객님의 ${period}개월 동안 월 상환액은 ${result}원 입니다.`;

    $('#result').text(resultText);
}

function loan100Handler() {
    var loan = $('#loan').val();

    if (loan == &quot;&quot;) {
        loan = 0;
    }

    loan = parseFloat(loan);

    loan = loan + 1000000;

    $('#loan').val(loan);
}

function loan1000Handler() {
    var loan = $('#loan').val();

    if (loan == &quot;&quot;) {
        loan = 0;
    }

    loan = parseFloat(loan);

    loan = loan + 10000000;

    $('#loan').val(loan);
}

function loan10000Handler() {
    var loan = $('#loan').val();

    if (loan == &quot;&quot;) {
        loan = 0;
    }

    loan = parseFloat(loan);

    loan = loan + 100000000;

    $('#loan').val(loan);
}

$(document).ready(function() {
    $('#calculate').click(calculateHandler);

    $('#loan-100').click(loan100Handler);
    $('#loan-1000').click(loan1000Handler);
    $('#loan-10000').click(loan10000Handler);
});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;대출금리와 대출기간 버튼 만들기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대출금리와 대출기간도 위와 비슷한 기능을 하는 버튼을 만들어주겠습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712209465465&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;tr&amp;gt;
    &amp;lt;th scope=&quot;row&quot;&amp;gt;대출금리&amp;lt;/th&amp;gt;
    &amp;lt;td&amp;gt;
        연 &amp;lt;input type=&quot;text&quot; id=&quot;interest&quot;&amp;gt; %
    &amp;lt;/td&amp;gt;
    &amp;lt;td&amp;gt;
        &amp;lt;button type=&quot;button&quot; id=&quot;interest-3&quot;&amp;gt;3%&amp;lt;/button&amp;gt;
        &amp;lt;button type=&quot;button&quot; id=&quot;interest-4&quot;&amp;gt;4%&amp;lt;/button&amp;gt;
        &amp;lt;button type=&quot;button&quot; id=&quot;interest-5&quot;&amp;gt;5%&amp;lt;/button&amp;gt;
    &amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;tr&amp;gt;
    &amp;lt;th scope=&quot;row&quot;&amp;gt;대출기간&amp;lt;/th&amp;gt;
    &amp;lt;td&amp;gt;
        &amp;lt;input type=&quot;text&quot; id=&quot;period&quot;&amp;gt; 개월
    &amp;lt;/td&amp;gt;
    &amp;lt;td&amp;gt;
        &amp;lt;button type=&quot;button&quot; id=&quot;period-1&quot;&amp;gt;1년&amp;lt;/button&amp;gt;
        &amp;lt;button type=&quot;button&quot; id=&quot;period-3&quot;&amp;gt;3년&amp;lt;/button&amp;gt;
        &amp;lt;button type=&quot;button&quot; id=&quot;period-5&quot;&amp;gt;5년&amp;lt;/button&amp;gt;
    &amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 버튼들은 더하기 버튼이 아니여서 현재 입력된 값에 더하는 형태가 아니라 새로운 값을 채워주는 형태로 만들어줄게요.&lt;/p&gt;
&lt;pre id=&quot;code_1712209494354&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function interest3Handler() {
    $('#interest').val(3);
}

function interest4Handler() {
    $('#interest').val(4);
}

function interest5Handler() {
    $('#interest').val(5);
}

function period1Handler() {
    $('#period').val(12);
}

function period3Handler() {
    $('#period').val(36);
}

function period5Handler() {
    $('#period').val(60);
}

$(document).ready(function() {
    $('#calculate').click(calculateHandler);

    $('#loan-100').click(loan100Handler);
    $('#loan-1000').click(loan1000Handler);
    $('#loan-10000').click(loan10000Handler);

    $('#interest-3').click(interest3Handler);
    $('#interest-4').click(interest4Handler);
    $('#interest-5').click(interest5Handler);

    $('#period-1').click(period1Handler);
    $('#period-3').click(period3Handler);
    $('#period-5').click(period5Handler);
});&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/O9wtY/btsGmWoZ29f/6rDNtdcIdKDU1ChkaK6zek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/O9wtY/btsGmWoZ29f/6rDNtdcIdKDU1ChkaK6zek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/O9wtY/btsGmWoZ29f/6rDNtdcIdKDU1ChkaK6zek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FO9wtY%2FbtsGmWoZ29f%2F6rDNtdcIdKDU1ChkaK6zek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;640&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 코드&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;index.html&lt;/p&gt;
&lt;pre id=&quot;code_1712209587442&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&amp;gt;
    &amp;lt;title&amp;gt;Hello, world!&amp;lt;/title&amp;gt;
    &amp;lt;link href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;main class=&quot;container&quot;&amp;gt;
        &amp;lt;h1&amp;gt;대출 이자 계산기&amp;lt;/h1&amp;gt;

        &amp;lt;table class=&quot;table&quot;&amp;gt;
            &amp;lt;tbody&amp;gt;
                &amp;lt;tr&amp;gt;
                    &amp;lt;th scope=&quot;row&quot;&amp;gt;대출금&amp;lt;/th&amp;gt;
                    &amp;lt;td&amp;gt;
                        &amp;lt;input type=&quot;text&quot; id=&quot;loan&quot;&amp;gt; 원
                    &amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;
                        &amp;lt;button type=&quot;button&quot; id=&quot;loan-100&quot;&amp;gt;+백만&amp;lt;/button&amp;gt;
                        &amp;lt;button type=&quot;button&quot; id=&quot;loan-1000&quot;&amp;gt;+천만&amp;lt;/button&amp;gt;
                        &amp;lt;button type=&quot;button&quot; id=&quot;loan-10000&quot;&amp;gt;+일억&amp;lt;/button&amp;gt;
                    &amp;lt;/td&amp;gt;
                &amp;lt;/tr&amp;gt;
                &amp;lt;tr&amp;gt;
                    &amp;lt;th scope=&quot;row&quot;&amp;gt;대출금리&amp;lt;/th&amp;gt;
                    &amp;lt;td&amp;gt;
                        연 &amp;lt;input type=&quot;text&quot; id=&quot;interest&quot;&amp;gt; %
                    &amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;
                        &amp;lt;button type=&quot;button&quot; id=&quot;interest-3&quot;&amp;gt;3%&amp;lt;/button&amp;gt;
                        &amp;lt;button type=&quot;button&quot; id=&quot;interest-4&quot;&amp;gt;4%&amp;lt;/button&amp;gt;
                        &amp;lt;button type=&quot;button&quot; id=&quot;interest-5&quot;&amp;gt;5%&amp;lt;/button&amp;gt;
                    &amp;lt;/td&amp;gt;
                &amp;lt;/tr&amp;gt;
                &amp;lt;tr&amp;gt;
                    &amp;lt;th scope=&quot;row&quot;&amp;gt;대출기간&amp;lt;/th&amp;gt;
                    &amp;lt;td&amp;gt;
                        &amp;lt;input type=&quot;text&quot; id=&quot;period&quot;&amp;gt; 개월
                    &amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;
                        &amp;lt;button type=&quot;button&quot; id=&quot;period-1&quot;&amp;gt;1년&amp;lt;/button&amp;gt;
                        &amp;lt;button type=&quot;button&quot; id=&quot;period-3&quot;&amp;gt;3년&amp;lt;/button&amp;gt;
                        &amp;lt;button type=&quot;button&quot; id=&quot;period-5&quot;&amp;gt;5년&amp;lt;/button&amp;gt;
                    &amp;lt;/td&amp;gt;
                &amp;lt;/tr&amp;gt;
            &amp;lt;/tbody&amp;gt;
        &amp;lt;/table&amp;gt;

        &amp;lt;button type=&quot;button&quot; id=&quot;calculate&quot;&amp;gt;계산하기&amp;lt;/button&amp;gt;

        &amp;lt;div id=&quot;result&quot;&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/main&amp;gt;

    &amp;lt;script src=&quot;https://code.jquery.com/jquery-3.6.1.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;script.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;script.js&lt;/p&gt;
&lt;pre id=&quot;code_1712209658252&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function calculateHandler() {
    var loan = $('#loan').val();
    var interest = $('#interest').val();
    var period = $('#period').val();

    loan = parseFloat(loan);
    interest = parseFloat(interest);
    period = parseFloat(period);

    var interestMonth = interest / 12 / 100;

    var div1 = loan * interestMonth * (1 + interestMonth) ** period;
    var div2 = (1 + interestMonth) ** period - 1;

    var result = div1 / div2;

    result = Math.round(result);

    var resultText = `고객님의 ${period}개월 동안 월 상환액은 ${result}원 입니다.`;

    $('#result').text(resultText);
}

function loan100Handler() {
    var loan = $('#loan').val();

    if (loan == &quot;&quot;) {
        loan = 0;
    }

    loan = parseFloat(loan);

    loan = loan + 1000000;

    $('#loan').val(loan);
}

function loan1000Handler() {
    var loan = $('#loan').val();

    if (loan == &quot;&quot;) {
        loan = 0;
    }

    loan = parseFloat(loan);

    loan = loan + 10000000;

    $('#loan').val(loan);
}

function loan10000Handler() {
    var loan = $('#loan').val();

    if (loan == &quot;&quot;) {
        loan = 0;
    }

    loan = parseFloat(loan);

    loan = loan + 100000000;

    $('#loan').val(loan);
}

function interest3Handler() {
    $('#interest').val(3);
}

function interest4Handler() {
    $('#interest').val(4);
}

function interest5Handler() {
    $('#interest').val(5);
}

function period1Handler() {
    $('#period').val(12);
}

function period3Handler() {
    $('#period').val(36);
}

function period5Handler() {
    $('#period').val(60);
}

$(document).ready(function() {
    $('#calculate').click(calculateHandler);

    $('#loan-100').click(loan100Handler);
    $('#loan-1000').click(loan1000Handler);
    $('#loan-10000').click(loan10000Handler);

    $('#interest-3').click(interest3Handler);
    $('#interest-4').click(interest4Handler);
    $('#interest-5').click(interest5Handler);

    $('#period-1').click(period1Handler);
    $('#period-3').click(period3Handler);
    $('#period-5').click(period5Handler);
});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3-6. Bootstrap을 활용한 계산기 디자인 꾸미기&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;텍스트박스 꾸미기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에도 Bootstrap을 사용하여 계산기를 예쁘게 꾸며봅시다. Bootstrap의 인풋 그룹 문서를 보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Bootstrap 인풋 그룹 문서: &lt;a href=&quot;https://getbootstrap.com/docs/5.2/forms/input-group/&quot;&gt;https://getbootstrap.com/docs/5.2/forms/input-group/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러분들이 맘에 드는 디자인으로 복사 붙여넣기 해도 괜찮습니다. 저는 아래와 같은 코드를 사용하여 텍스트박스를 꾸며보겠습니다. 꾸미고 난 후에는 동작이 잘되는지 꼭 확인합시다!&lt;/p&gt;
&lt;pre id=&quot;code_1712209699109&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;input-group mb-3&quot;&amp;gt;
    &amp;lt;span class=&quot;input-group-text&quot;&amp;gt;$&amp;lt;/span&amp;gt;
    &amp;lt;input type=&quot;text&quot; class=&quot;form-control&quot; aria-label=&quot;Amount (to the nearest dollar)&quot;&amp;gt;
    &amp;lt;span class=&quot;input-group-text&quot;&amp;gt;.00&amp;lt;/span&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디자인 적용한 코드&lt;/p&gt;
&lt;pre id=&quot;code_1712209715556&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;tr&amp;gt;
    &amp;lt;th scope=&quot;row&quot;&amp;gt;대출금&amp;lt;/th&amp;gt;
    &amp;lt;td&amp;gt;
        &amp;lt;div class=&quot;input-group&quot;&amp;gt;
            &amp;lt;input type=&quot;text&quot; class=&quot;form-control&quot; id=&quot;loan&quot;&amp;gt;
            &amp;lt;span class=&quot;input-group-text&quot;&amp;gt;원&amp;lt;/span&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/td&amp;gt;
    &amp;lt;td&amp;gt;
        &amp;lt;button type=&quot;button&quot; id=&quot;loan-100&quot;&amp;gt;+백만&amp;lt;/button&amp;gt;
        &amp;lt;button type=&quot;button&quot; id=&quot;loan-1000&quot;&amp;gt;+천만&amp;lt;/button&amp;gt;
        &amp;lt;button type=&quot;button&quot; id=&quot;loan-10000&quot;&amp;gt;+일억&amp;lt;/button&amp;gt;
    &amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;548&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1gqri/btsGlyJoAup/Vi7YDlxgl5pRTk35ScTgB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1gqri/btsGlyJoAup/Vi7YDlxgl5pRTk35ScTgB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1gqri/btsGlyJoAup/Vi7YDlxgl5pRTk35ScTgB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1gqri%2FbtsGlyJoAup%2FVi7YDlxgl5pRTk35ScTgB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;548&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;548&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;편의 기능 버튼 꾸미기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버튼은 버튼 그룹으로 묶어주겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버튼 그룹 문서: &lt;a href=&quot;https://getbootstrap.com/docs/5.2/components/button-group/&quot;&gt;https://getbootstrap.com/docs/5.2/components/button-group/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712209750171&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Button group&quot; data-og-description=&quot;Group a series of buttons together on a single line or stack them in a vertical column.&quot; data-og-host=&quot;getbootstrap.com&quot; data-og-source-url=&quot;https://getbootstrap.com/docs/5.2/components/button-group/&quot; data-og-url=&quot;https://getbootstrap.com/docs/5.2/components/button-group/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/IZA1X/hyVJTwPAkN/SKYSSETPGXUEDsk4pbxJf0/img.png?width=2000&amp;amp;height=1000&amp;amp;face=0_0_2000_1000&quot;&gt;&lt;a href=&quot;https://getbootstrap.com/docs/5.2/components/button-group/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://getbootstrap.com/docs/5.2/components/button-group/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/IZA1X/hyVJTwPAkN/SKYSSETPGXUEDsk4pbxJf0/img.png?width=2000&amp;amp;height=1000&amp;amp;face=0_0_2000_1000');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Button group&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Group a series of buttons together on a single line or stack them in a vertical column.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;getbootstrap.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1712209755178&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;tr&amp;gt;
    &amp;lt;th scope=&quot;row&quot;&amp;gt;대출금&amp;lt;/th&amp;gt;
    &amp;lt;td&amp;gt;
        &amp;lt;div class=&quot;input-group&quot;&amp;gt;
            &amp;lt;input type=&quot;text&quot; class=&quot;form-control&quot; id=&quot;loan&quot;&amp;gt;
            &amp;lt;span class=&quot;input-group-text&quot;&amp;gt;원&amp;lt;/span&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/td&amp;gt;
    &amp;lt;td&amp;gt;
        &amp;lt;div class=&quot;btn-group&quot; role=&quot;group&quot;&amp;gt;
            &amp;lt;button type=&quot;button&quot; class=&quot;btn btn-outline-primary&quot; id=&quot;loan-100&quot;&amp;gt;+1백만&amp;lt;/button&amp;gt;
            &amp;lt;button type=&quot;button&quot; class=&quot;btn btn-outline-primary&quot; id=&quot;loan-1000&quot;&amp;gt;+1천만&amp;lt;/button&amp;gt;
            &amp;lt;button type=&quot;button&quot; class=&quot;btn btn-outline-primary&quot; id=&quot;loan-10000&quot;&amp;gt;+1억&amp;lt;/button&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;514&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHNRwA/btsGmvFbEBY/kqfoHrM2DKWkOF8s3klSH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHNRwA/btsGmvFbEBY/kqfoHrM2DKWkOF8s3klSH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHNRwA/btsGmvFbEBY/kqfoHrM2DKWkOF8s3klSH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHNRwA%2FbtsGmvFbEBY%2FkqfoHrM2DKWkOF8s3klSH0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;514&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;514&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;계산하기 버튼 꾸미기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버튼 문서를 참고하여 계산하기 버튼도 꾸며봅시다. 저는 계산하기 버튼에 class=&quot;btn btn-primary&quot; 를 추가하여 파란색 버튼을 만들겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버튼 문서: &lt;a href=&quot;https://getbootstrap.com/docs/5.2/components/buttons/&quot;&gt;https://getbootstrap.com/docs/5.2/components/buttons/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712209783290&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Buttons&quot; data-og-description=&quot;Use Bootstrap&amp;rsquo;s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.&quot; data-og-host=&quot;getbootstrap.com&quot; data-og-source-url=&quot;https://getbootstrap.com/docs/5.2/components/buttons/&quot; data-og-url=&quot;https://getbootstrap.com/docs/5.2/components/buttons/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bw2BD0/hyVJWG61Vw/77TlHecWC4kjkHWsXfWTjk/img.png?width=2000&amp;amp;height=1000&amp;amp;face=0_0_2000_1000&quot;&gt;&lt;a href=&quot;https://getbootstrap.com/docs/5.2/components/buttons/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://getbootstrap.com/docs/5.2/components/buttons/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bw2BD0/hyVJWG61Vw/77TlHecWC4kjkHWsXfWTjk/img.png?width=2000&amp;amp;height=1000&amp;amp;face=0_0_2000_1000');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Buttons&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Use Bootstrap&amp;rsquo;s custom button styles for actions in forms, dialogs, and more with support for multiple sizes, states, and more.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;getbootstrap.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;570&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Jz6Ca/btsGlwY5bcQ/qsjxzX2j4iFBAOQjw1ZuJ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Jz6Ca/btsGlwY5bcQ/qsjxzX2j4iFBAOQjw1ZuJ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Jz6Ca/btsGlwY5bcQ/qsjxzX2j4iFBAOQjw1ZuJ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJz6Ca%2FbtsGlwY5bcQ%2FqsjxzX2j4iFBAOQjw1ZuJ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;570&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;570&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;결과 텍스트 꾸미기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Bootstrap의 타이포그래프 문서 중에 텍스트의 일부를 하이라이트할 수 있는 방법이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;타이포그래피 문서: &lt;a href=&quot;https://getbootstrap.com/docs/5.2/content/typography/#inline-text-elements&quot;&gt;https://getbootstrap.com/docs/5.2/content/typography/#inline-text-elements&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712209804200&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Typography&quot; data-og-description=&quot;Documentation and examples for Bootstrap typography, including global settings, headings, body text, lists, and more.&quot; data-og-host=&quot;getbootstrap.com&quot; data-og-source-url=&quot;https://getbootstrap.com/docs/5.2/content/typography/#inline-text-elements&quot; data-og-url=&quot;https://getbootstrap.com/docs/5.2/content/typography/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ndXce/hyVJUP4epE/Gc7hdPAyKrE12ejuNYVOLk/img.png?width=2000&amp;amp;height=1000&amp;amp;face=0_0_2000_1000&quot;&gt;&lt;a href=&quot;https://getbootstrap.com/docs/5.2/content/typography/#inline-text-elements&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://getbootstrap.com/docs/5.2/content/typography/#inline-text-elements&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ndXce/hyVJUP4epE/Gc7hdPAyKrE12ejuNYVOLk/img.png?width=2000&amp;amp;height=1000&amp;amp;face=0_0_2000_1000');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Typography&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Documentation and examples for Bootstrap typography, including global settings, headings, body text, lists, and more.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;getbootstrap.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1122&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/esQAhN/btsGkuU0pLj/2HG807ji8O9jmTKlFplvQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/esQAhN/btsGkuU0pLj/2HG807ji8O9jmTKlFplvQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/esQAhN/btsGkuU0pLj/2HG807ji8O9jmTKlFplvQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FesQAhN%2FbtsGkuU0pLj%2F2HG807ji8O9jmTKlFplvQ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1122&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1122&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;강조하고 싶은 텍스트 사이에 &amp;lt;mark&amp;gt;강조&amp;lt;/mark&amp;gt;를 씌우면 된다고 설명하고 있습니다. 결과 텍스트에 mark 태그를 삽입하려면 calculateHandler() 함수에 resultText 변수에 넣어주면 될 것 같습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712209848266&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var resultText = `고객님의 ${period}개월 동안 월 상환액은 &amp;lt;mark&amp;gt;${result}원&amp;lt;/mark&amp;gt; 입니다.`;

$('#result').text(resultText);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;566&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2hWSx/btsGmCdcaDl/9RGeFMrSqKHjZrKS0AAJd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2hWSx/btsGmCdcaDl/9RGeFMrSqKHjZrKS0AAJd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2hWSx/btsGmCdcaDl/9RGeFMrSqKHjZrKS0AAJd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2hWSx%2FbtsGmCdcaDl%2F9RGeFMrSqKHjZrKS0AAJd0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;566&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;566&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이상하게도 &amp;lt;mark&amp;gt; 태그가 텍스트 그대로 출력됩니다. 왜일까요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;mark&amp;gt; 태그는 HTML 마크업 언어입니다. 근데 우리는 text()라는 함수를 사용해서 텍스트를 출력하라고 명령을 내렸기 때문입니다. HTML 마크업 언어를 출력하기 위해서 text() 대신 html()이라는 함수를 사용합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712209936188&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var resultText = `고객님의 ${period}개월 동안 월 상환액은 &amp;lt;mark&amp;gt;${result}원&amp;lt;/mark&amp;gt; 입니다.`;

$('#result').html(resultText);&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;563&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cZN5CZ/btsGlVxyHkj/tIl8avsNbZsJ5dKc3XqeY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cZN5CZ/btsGlVxyHkj/tIl8avsNbZsJ5dKc3XqeY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cZN5CZ/btsGlVxyHkj/tIl8avsNbZsJ5dKc3XqeY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZN5CZ%2FbtsGlVxyHkj%2FtIl8avsNbZsJ5dKc3XqeY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;563&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;563&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;결과 텍스트 꾸미기 (심화)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과 텍스트가 금액이 커질 경우 읽기 힘드니 콤마를 붙여서 가독성을 좋게 만들어봅시다. (예: 1000000만원, 1,000,000만원)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구글에 javascript comma number 라고 검색하여 가장 첫 번째 나오는 링크를 클릭합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  StackOverflow는 개발자들의 성지로 코딩에 대해 모르는 것을 질문하고 답변하는 세계에서 가장 유명한 서비스입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;622&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VXwlM/btsGnK2C0fI/DEI3CpdO48yIhPK5gabO6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VXwlM/btsGnK2C0fI/DEI3CpdO48yIhPK5gabO6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VXwlM/btsGnK2C0fI/DEI3CpdO48yIhPK5gabO6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVXwlM%2FbtsGnK2C0fI%2FDEI3CpdO48yIhPK5gabO6K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;622&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;622&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래로 내리다보면 우리에게 적절한 함수를 찾을 수 있습니다. Up vote를 2831개나 받은 답변이네요. 이 답변에서는 toLocaleString() 함수를 쓰면 된다고 써있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;429&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTduei/btsGn7QOF7o/Dboe5cioWQpHUAapg6eR3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTduei/btsGn7QOF7o/Dboe5cioWQpHUAapg6eR3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTduei/btsGn7QOF7o/Dboe5cioWQpHUAapg6eR3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTduei%2FbtsGn7QOF7o%2FDboe5cioWQpHUAapg6eR3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;429&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;429&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 답변을 참고하여 calculateHandler() 함수 내의 result 코드를 다음과 같이 수정합니다. 이제 결과가 깔끔하게 나옵니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712210120048&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;result = Math.round(result).toLocaleString();&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;558&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ekfwc/btsGkvzC9OM/83wz2H9bbHaqbMcNzGm8N1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ekfwc/btsGkvzC9OM/83wz2H9bbHaqbMcNzGm8N1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ekfwc/btsGkvzC9OM/83wz2H9bbHaqbMcNzGm8N1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEkfwc%2FbtsGkvzC9OM%2F83wz2H9bbHaqbMcNzGm8N1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;558&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;558&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전체 코드&lt;/p&gt;
&lt;pre id=&quot;code_1712210404183&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&amp;gt;
    &amp;lt;title&amp;gt;Hello, world!&amp;lt;/title&amp;gt;
    &amp;lt;link href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;main class=&quot;container&quot;&amp;gt;
        &amp;lt;h1&amp;gt;대출 이자 계산기&amp;lt;/h1&amp;gt;

        &amp;lt;table class=&quot;table&quot;&amp;gt;
            &amp;lt;tbody&amp;gt;
                &amp;lt;tr&amp;gt;
                    &amp;lt;th scope=&quot;row&quot;&amp;gt;대출금&amp;lt;/th&amp;gt;
                    &amp;lt;td&amp;gt;
                        &amp;lt;div class=&quot;input-group&quot;&amp;gt;
                            &amp;lt;input type=&quot;text&quot; class=&quot;form-control&quot; id=&quot;loan&quot;&amp;gt;
                            &amp;lt;span class=&quot;input-group-text&quot;&amp;gt;원&amp;lt;/span&amp;gt;
                        &amp;lt;/div&amp;gt;
                    &amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;
                        &amp;lt;div class=&quot;btn-group&quot; role=&quot;group&quot;&amp;gt;
                            &amp;lt;button type=&quot;button&quot; class=&quot;btn btn-outline-primary&quot; id=&quot;loan-100&quot;&amp;gt;+1백만&amp;lt;/button&amp;gt;
                            &amp;lt;button type=&quot;button&quot; class=&quot;btn btn-outline-primary&quot; id=&quot;loan-1000&quot;&amp;gt;+1천만&amp;lt;/button&amp;gt;
                            &amp;lt;button type=&quot;button&quot; class=&quot;btn btn-outline-primary&quot; id=&quot;loan-10000&quot;&amp;gt;+1억&amp;lt;/button&amp;gt;
                        &amp;lt;/div&amp;gt;
                    &amp;lt;/td&amp;gt;
                &amp;lt;/tr&amp;gt;
                &amp;lt;tr&amp;gt;
                    &amp;lt;th scope=&quot;row&quot;&amp;gt;대출금리&amp;lt;/th&amp;gt;
                    &amp;lt;td&amp;gt;
                        &amp;lt;div class=&quot;input-group&quot;&amp;gt;
                            &amp;lt;span class=&quot;input-group-text&quot;&amp;gt;연&amp;lt;/span&amp;gt;
                            &amp;lt;input type=&quot;text&quot; class=&quot;form-control&quot; id=&quot;interest&quot;&amp;gt;
                            &amp;lt;span class=&quot;input-group-text&quot;&amp;gt;%&amp;lt;/span&amp;gt;
                        &amp;lt;/div&amp;gt;
                    &amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;
                        &amp;lt;div class=&quot;btn-group&quot; role=&quot;group&quot;&amp;gt;
                            &amp;lt;button type=&quot;button&quot; class=&quot;btn btn-outline-primary&quot; id=&quot;interest-3&quot;&amp;gt;3%&amp;lt;/button&amp;gt;
                            &amp;lt;button type=&quot;button&quot; class=&quot;btn btn-outline-primary&quot; id=&quot;interest-4&quot;&amp;gt;4%&amp;lt;/button&amp;gt;
                            &amp;lt;button type=&quot;button&quot; class=&quot;btn btn-outline-primary&quot; id=&quot;interest-5&quot;&amp;gt;5%&amp;lt;/button&amp;gt;
                        &amp;lt;/div&amp;gt;
                    &amp;lt;/td&amp;gt;
                &amp;lt;/tr&amp;gt;
                &amp;lt;tr&amp;gt;
                    &amp;lt;th scope=&quot;row&quot;&amp;gt;대출기간&amp;lt;/th&amp;gt;
                    &amp;lt;td&amp;gt;
                        &amp;lt;div class=&quot;input-group&quot;&amp;gt;
                            &amp;lt;input type=&quot;text&quot; class=&quot;form-control&quot; id=&quot;period&quot;&amp;gt;
                            &amp;lt;span class=&quot;input-group-text&quot;&amp;gt;개월&amp;lt;/span&amp;gt;
                        &amp;lt;/div&amp;gt;
                    &amp;lt;/td&amp;gt;
                    &amp;lt;td&amp;gt;
                        &amp;lt;div class=&quot;btn-group&quot; role=&quot;group&quot;&amp;gt;
                            &amp;lt;button type=&quot;button&quot; class=&quot;btn btn-outline-primary&quot; id=&quot;period-1&quot;&amp;gt;1년&amp;lt;/button&amp;gt;
                            &amp;lt;button type=&quot;button&quot; class=&quot;btn btn-outline-primary&quot; id=&quot;period-3&quot;&amp;gt;3년&amp;lt;/button&amp;gt;
                            &amp;lt;button type=&quot;button&quot; class=&quot;btn btn-outline-primary&quot; id=&quot;period-5&quot;&amp;gt;5년&amp;lt;/button&amp;gt;
                        &amp;lt;/div&amp;gt;
                    &amp;lt;/td&amp;gt;
                &amp;lt;/tr&amp;gt;
            &amp;lt;/tbody&amp;gt;
        &amp;lt;/table&amp;gt;

        &amp;lt;button type=&quot;button&quot; id=&quot;calculate&quot; class=&quot;btn btn-primary&quot;&amp;gt;계산하기&amp;lt;/button&amp;gt;

        &amp;lt;div id=&quot;result&quot;&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/main&amp;gt;

    &amp;lt;script src=&quot;https://code.jquery.com/jquery-3.6.1.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;script.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;script.js&lt;/p&gt;
&lt;pre id=&quot;code_1712210513666&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function calculateHandler() {
    var loan = $('#loan').val();
    var interest = $('#interest').val();
    var period = $('#period').val();

    loan = parseFloat(loan);
    interest = parseFloat(interest);
    period = parseFloat(period);

    var interestMonth = interest / 12 / 100;

    var div1 = loan * interestMonth * (1 + interestMonth) ** period;
    var div2 = (1 + interestMonth) ** period - 1;

    var result = div1 / div2;

    result = Math.round(result).toLocaleString();

    var resultText = `고객님의 ${period}개월 동안 월 상환액은 &amp;lt;mark&amp;gt;${result}원&amp;lt;/mark&amp;gt; 입니다.`;

    $('#result').html(resultText);
}

function loan100Handler() {
    var loan = $('#loan').val();

    if (loan == &quot;&quot;) {
        loan = 0;
    }

    loan = parseFloat(loan);

    loan = loan + 1000000;

    $('#loan').val(loan);
}

function loan1000Handler() {
    var loan = $('#loan').val();

    if (loan == &quot;&quot;) {
        loan = 0;
    }

    loan = parseFloat(loan);

    loan = loan + 10000000;

    $('#loan').val(loan);
}

function loan10000Handler() {
    var loan = $('#loan').val();

    if (loan == &quot;&quot;) {
        loan = 0;
    }

    loan = parseFloat(loan);

    loan = loan + 100000000;

    $('#loan').val(loan);
}

function interest3Handler() {
    $('#interest').val(3);
}

function interest4Handler() {
    $('#interest').val(4);
}

function interest5Handler() {
    $('#interest').val(5);
}

function period1Handler() {
    $('#period').val(12);
}

function period3Handler() {
    $('#period').val(36);
}

function period5Handler() {
    $('#period').val(60);
}

$(document).ready(function() {
    $('#calculate').click(calculateHandler);

    $('#loan-100').click(loan100Handler);
    $('#loan-1000').click(loan1000Handler);
    $('#loan-10000').click(loan10000Handler);

    $('#interest-3').click(interest3Handler);
    $('#interest-4').click(interest4Handler);
    $('#interest-5').click(interest5Handler);

    $('#period-1').click(period1Handler);
    $('#period-3').click(period3Handler);
    $('#period-5').click(period5Handler);
});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3-7. 웹 사이트 기본 기능 만들기 - 상단 메뉴, 홈버튼 구현&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;원하는 템플릿 골라서 사용하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 지금까지 2개의 서비스를 만들었습니다. 이 2개의 서비스는 독립적으로 사용자들에게 배포할 수도 있지만 한 웹사이트 안에 여러가지 서비스가 함께 있을 경우 더 많은 방문자가 더 오래 체류할 가능성이 높습니다. 우리는 사칙연산 계산기와 대출 이자 계산기를 하나의 사이트에서 메뉴로 이동할 수 있게끔 구현해보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 여러분들이 강의를 잘 따라오셨다면 VSCode 사이드 메뉴 파일탐색기에 다음과 같이 part1, part2, part3라는 폴더가 있을거에요. 폴더 가장 바깥쪽에 main.html 파일을 새로 만들어 홈페이지로 사용하도록 하겠습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;906&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biFQ5M/btsGnKaxr3K/znbDk2NZ8Pic9rZlg6NjfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biFQ5M/btsGnKaxr3K/znbDk2NZ8Pic9rZlg6NjfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biFQ5M/btsGnKaxr3K/znbDk2NZ8Pic9rZlg6NjfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiFQ5M%2FbtsGnKaxr3K%2FznbDk2NZ8Pic9rZlg6NjfK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;580&quot; height=&quot;906&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;906&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;main.html 파일 안에 채워넣을 템플릿을 찾아봅시다. Bootstrap 예제 중에서 골라볼게요. Navbars 섹션에 있는 Navbar fixed를 사용해보겠습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Bootstrap 예제: &lt;a href=&quot;https://getbootstrap.com/docs/5.2/examples/&quot;&gt;https://getbootstrap.com/docs/5.2/examples/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Navbar fixed 예제 사이트: &lt;a href=&quot;https://getbootstrap.com/docs/5.2/examples/navbar-fixed/&quot;&gt;https://getbootstrap.com/docs/5.2/examples/navbar-fixed/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;먼저 보일러플레이트 코드를 복사+붙여넣기합니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712210887245&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&amp;gt;
    &amp;lt;title&amp;gt;Hello, world!&amp;lt;/title&amp;gt;
    &amp;lt;link href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;main class=&quot;container&quot;&amp;gt;
        &amp;lt;h1&amp;gt;Hello, world!&amp;lt;/h1&amp;gt;
    &amp;lt;/main&amp;gt;

    &amp;lt;script src=&quot;https://code.jquery.com/jquery-3.6.1.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;script.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1712210935131&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$(document).ready(function() {

});&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1712210954421&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;/* 비어있음 */&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Navbar fixed 예제에서 오른쪽 클릭 페이지 소스 보기 또는 보기 - 개발자 정보 - 소스 보기 메뉴를 클릭하여 소스코드를 확인합니다. 먼저 body 부분의 nav, main 태그를 전부 복사하여 main.html 파일의 body 부분에 붙여넣습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712211101135&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;nav class=&quot;navbar navbar-expand-md navbar-dark fixed-top bg-dark&quot;&amp;gt;
    &amp;lt;div class=&quot;container-fluid&quot;&amp;gt;
        &amp;lt;a class=&quot;navbar-brand&quot; href=&quot;#&quot;&amp;gt;Fixed navbar&amp;lt;/a&amp;gt;
        &amp;lt;button class=&quot;navbar-toggler&quot; type=&quot;button&quot; data-bs-toggle=&quot;collapse&quot; data-bs-target=&quot;#navbarCollapse&quot; aria-controls=&quot;navbarCollapse&quot; aria-expanded=&quot;false&quot; aria-label=&quot;Toggle navigation&quot;&amp;gt;
            &amp;lt;span class=&quot;navbar-toggler-icon&quot;&amp;gt;&amp;lt;/span&amp;gt;
        &amp;lt;/button&amp;gt;
        &amp;lt;div class=&quot;collapse navbar-collapse&quot; id=&quot;navbarCollapse&quot;&amp;gt;
            &amp;lt;ul class=&quot;navbar-nav me-auto mb-2 mb-md-0&quot;&amp;gt;
		            &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
		                &amp;lt;a class=&quot;nav-link active&quot; aria-current=&quot;page&quot; href=&quot;#&quot;&amp;gt;Home&amp;lt;/a&amp;gt;
		            &amp;lt;/li&amp;gt;
		            &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
		                &amp;lt;a class=&quot;nav-link&quot; href=&quot;#&quot;&amp;gt;Link&amp;lt;/a&amp;gt;
		            &amp;lt;/li&amp;gt;
		            &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
		                &amp;lt;a class=&quot;nav-link disabled&quot;&amp;gt;Disabled&amp;lt;/a&amp;gt;
		            &amp;lt;/li&amp;gt;
            &amp;lt;/ul&amp;gt;
            &amp;lt;form class=&quot;d-flex&quot; role=&quot;search&quot;&amp;gt;
                &amp;lt;input class=&quot;form-control me-2&quot; type=&quot;search&quot; placeholder=&quot;Search&quot; aria-label=&quot;Search&quot;&amp;gt;
                &amp;lt;button class=&quot;btn btn-outline-success&quot; type=&quot;submit&quot;&amp;gt;Search&amp;lt;/button&amp;gt;
            &amp;lt;/form&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/nav&amp;gt;

&amp;lt;main class=&quot;container&quot;&amp;gt;
      &amp;lt;div class=&quot;bg-light p-5 rounded&quot;&amp;gt;
          &amp;lt;h1&amp;gt;Navbar example&amp;lt;/h1&amp;gt;
          &amp;lt;p class=&quot;lead&quot;&amp;gt;This example is a quick exercise to illustrate how fixed to top navbar works. As you scroll, it will remain fixed to the top of your browser&amp;rsquo;s viewport.&amp;lt;/p&amp;gt;
          &amp;lt;a class=&quot;btn btn-lg btn-primary&quot; href=&quot;/docs/5.2/components/navbar/&quot; role=&quot;button&quot;&amp;gt;View navbar docs &amp;amp;raquo;&amp;lt;/a&amp;gt;
      &amp;lt;/div&amp;gt;
&amp;lt;/main&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;432&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cankJY/btsGmAGxpKU/ogV5MZ6i2WnnWq1nJkFKo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cankJY/btsGmAGxpKU/ogV5MZ6i2WnnWq1nJkFKo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cankJY/btsGmAGxpKU/ogV5MZ6i2WnnWq1nJkFKo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcankJY%2FbtsGmAGxpKU%2FogV5MZ6i2WnnWq1nJkFKo1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;432&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;432&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Live Preview로 미리보기를 하면, 아직은 화면이 좀 이상한데요, css를 적용하면 더 보기 좋아질 겁니다. 페이지 소스에서 navbar-top-fixed.css 파일을 클릭하여 안에 있는 스타일시트 언어를 복사하여 style.css 파일에 붙여넣기합니다. 그럼 정상적으로 보이죠!&lt;/p&gt;
&lt;pre id=&quot;code_1712211271945&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;body {
    min-height: 75rem;
    padding-top: 4.5rem;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;570&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cRfdtt/btsGnNE5r6u/V8pXzbB0pv70c6IhU5lOi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cRfdtt/btsGnNE5r6u/V8pXzbB0pv70c6IhU5lOi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cRfdtt/btsGnNE5r6u/V8pXzbB0pv70c6IhU5lOi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcRfdtt%2FbtsGnNE5r6u%2FV8pXzbB0pv70c6IhU5lOi0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;570&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;570&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;템플릿 내 글자 바꾸기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;main.html 문서를 입맛대로 수정하여 필요없는 것은 지우고 우리가 원하는 문구로 만들어 보겠습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712211415471&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&amp;gt;
    &amp;lt;title&amp;gt;빵형의 홈페이지&amp;lt;/title&amp;gt;
    &amp;lt;link href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;nav class=&quot;navbar navbar-expand-md navbar-dark fixed-top bg-dark&quot;&amp;gt;
        &amp;lt;div class=&quot;container-fluid&quot;&amp;gt;
            &amp;lt;a class=&quot;navbar-brand&quot; href=&quot;#&quot;&amp;gt;빵형의 홈페이지&amp;lt;/a&amp;gt;
            &amp;lt;button class=&quot;navbar-toggler&quot; type=&quot;button&quot; data-bs-toggle=&quot;collapse&quot; data-bs-target=&quot;#navbarCollapse&quot; aria-controls=&quot;navbarCollapse&quot; aria-expanded=&quot;false&quot; aria-label=&quot;Toggle navigation&quot;&amp;gt;
                &amp;lt;span class=&quot;navbar-toggler-icon&quot;&amp;gt;&amp;lt;/span&amp;gt;
            &amp;lt;/button&amp;gt;
            &amp;lt;div class=&quot;collapse navbar-collapse&quot; id=&quot;navbarCollapse&quot;&amp;gt;
                &amp;lt;ul class=&quot;navbar-nav me-auto mb-2 mb-md-0&quot;&amp;gt;
                    &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
                        &amp;lt;a class=&quot;nav-link active&quot; aria-current=&quot;page&quot; href=&quot;#&quot;&amp;gt;홈&amp;lt;/a&amp;gt;
                    &amp;lt;/li&amp;gt;
                    &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
                        &amp;lt;a class=&quot;nav-link&quot; href=&quot;#&quot;&amp;gt;사칙연산 계산기&amp;lt;/a&amp;gt;
                    &amp;lt;/li&amp;gt;
                    &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
                        &amp;lt;a class=&quot;nav-link&quot; href=&quot;#&quot;&amp;gt;대출이자 계산기&amp;lt;/a&amp;gt;
                    &amp;lt;/li&amp;gt;
                &amp;lt;/ul&amp;gt;
            &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/nav&amp;gt;

    &amp;lt;main class=&quot;container&quot;&amp;gt;
        &amp;lt;div class=&quot;bg-light p-5 rounded&quot;&amp;gt;
            &amp;lt;h1&amp;gt;사칙연산 계산기&amp;lt;/h1&amp;gt;
            &amp;lt;p class=&quot;lead&quot;&amp;gt;깔끔한 디자인의 사칙연산 계산기입니다.&amp;lt;/p&amp;gt;
            &amp;lt;a class=&quot;btn btn-lg btn-primary&quot; href=&quot;/docs/5.2/components/navbar/&quot; role=&quot;button&quot;&amp;gt;바로가기 &amp;amp;raquo;&amp;lt;/a&amp;gt;
        &amp;lt;/div&amp;gt;

        &amp;lt;div class=&quot;bg-light p-5 rounded&quot;&amp;gt;
            &amp;lt;h1&amp;gt;대출이자 계산기&amp;lt;/h1&amp;gt;
            &amp;lt;p class=&quot;lead&quot;&amp;gt;깔끔한 디자인의 대출 이자 계산기입니다. 원리금균등상환 계산을 빠르게 할 수 있습니다.&amp;lt;/p&amp;gt;
            &amp;lt;a class=&quot;btn btn-lg btn-primary&quot; href=&quot;/docs/5.2/components/navbar/&quot; role=&quot;button&quot;&amp;gt;바로가기 &amp;amp;raquo;&amp;lt;/a&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/main&amp;gt;

    &amp;lt;script src=&quot;https://code.jquery.com/jquery-3.6.1.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;script.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;979&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHMe6M/btsGlUSZIfk/JWX2PaukUqj6Va6QT6vZVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHMe6M/btsGlUSZIfk/JWX2PaukUqj6Va6QT6vZVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHMe6M/btsGlUSZIfk/JWX2PaukUqj6Va6QT6vZVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHMe6M%2FbtsGlUSZIfk%2FJWX2PaukUqj6Va6QT6vZVk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;979&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;979&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;버튼 링크 연결하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버튼 링크 동작을 관리하는 코드를 자세히 보겠습니다. 이 코드에서 href 부분을 수정하면 원하는 링크로 이동하도록 할 수 있습니다. 원하는 링크는 파일 경로로 지정할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712211679505&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;a class=&quot;btn btn-lg btn-primary&quot; href=&quot;/docs/5.2/components/navbar/&quot; role=&quot;button&quot;&amp;gt;바로가기 &amp;amp;raquo;&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리가 만든 사칙연산 계산기는 /part2/index.html 경로에 저장되어 있으므로 href 안의 링크를 다음과 같이 변경합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1712211803749&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;a class=&quot;btn btn-lg btn-primary&quot; href=&quot;/part2/index.html&quot; role=&quot;button&quot;&amp;gt;바로가기 &amp;amp;raquo;&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;잘 동작하는지 확인하고 대출이자 계산기의 링크도 변경해줍니다. 대출이자 계산기의 경로는 /part3/index.html 입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712211920598&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;a class=&quot;btn btn-lg btn-primary&quot; href=&quot;/part3/index.html&quot; role=&quot;button&quot;&amp;gt;바로가기 &amp;amp;raquo;&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;상단 메뉴 링크 연결하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버튼 링크와 마찬가지로 상단 메뉴 링크도 각각 연결해줍니다. 홈 링크는 /main.html 로 연결해줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712211997082&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;nav class=&quot;navbar navbar-expand-md navbar-dark fixed-top bg-dark&quot;&amp;gt;
    &amp;lt;div class=&quot;container-fluid&quot;&amp;gt;
        &amp;lt;a class=&quot;navbar-brand&quot; href=&quot;/main.html&quot;&amp;gt;빵형의 홈페이지&amp;lt;/a&amp;gt;
        &amp;lt;button class=&quot;navbar-toggler&quot; type=&quot;button&quot; data-bs-toggle=&quot;collapse&quot; data-bs-target=&quot;#navbarCollapse&quot; aria-controls=&quot;navbarCollapse&quot; aria-expanded=&quot;false&quot; aria-label=&quot;Toggle navigation&quot;&amp;gt;
            &amp;lt;span class=&quot;navbar-toggler-icon&quot;&amp;gt;&amp;lt;/span&amp;gt;
        &amp;lt;/button&amp;gt;
        &amp;lt;div class=&quot;collapse navbar-collapse&quot; id=&quot;navbarCollapse&quot;&amp;gt;
            &amp;lt;ul class=&quot;navbar-nav me-auto mb-2 mb-md-0&quot;&amp;gt;
                &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
                    &amp;lt;a class=&quot;nav-link active&quot; aria-current=&quot;page&quot; href=&quot;/main.html&quot;&amp;gt;홈&amp;lt;/a&amp;gt;
                &amp;lt;/li&amp;gt;
                &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
                    &amp;lt;a class=&quot;nav-link&quot; href=&quot;/part2/index.html&quot;&amp;gt;사칙연산 계산기&amp;lt;/a&amp;gt;
                &amp;lt;/li&amp;gt;
                &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
                    &amp;lt;a class=&quot;nav-link&quot; href=&quot;/part3/index.html&quot;&amp;gt;대출이자 계산기&amp;lt;/a&amp;gt;
                &amp;lt;/li&amp;gt;
            &amp;lt;/ul&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
&amp;lt;/nav&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;상세 페이지 연결하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상세 페이지도 비슷하게 작업합니다. 상세페이지에는 nav 태그 부분만 작업하면 되겠죠? 그리고 style.css 파일에 있는 css 코드를 넣는 것 잊지마세요!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;309&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vueW0/btsGlw5U7NA/9avOjyxOEtSLUCnMqbbQFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vueW0/btsGlw5U7NA/9avOjyxOEtSLUCnMqbbQFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vueW0/btsGlw5U7NA/9avOjyxOEtSLUCnMqbbQFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvueW0%2FbtsGlw5U7NA%2F9avOjyxOEtSLUCnMqbbQFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;309&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;309&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;626&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NJgsd/btsGmufdWk7/omKnmKXRW0B1LCVPdaWpT1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NJgsd/btsGmufdWk7/omKnmKXRW0B1LCVPdaWpT1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NJgsd/btsGmufdWk7/omKnmKXRW0B1LCVPdaWpT1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNJgsd%2FbtsGmufdWk7%2FomKnmKXRW0B1LCVPdaWpT1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;626&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;626&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;메뉴 활성화 상태 표시하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상단 메뉴를 보면 [홈] 버튼이 밝게 활성화되어 있는 것을 볼 수 있습니다. 사칙연산 계산기 페이지에서는 사칙연산 계산기 글씨가 활성화되도록 만들어보죠. active라고 되어 있는 부분을 유심히 찾아보세요. 사칙연산 계산기라고 되어 있는 부분 class 안에 active를 추가해줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1712213230473&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;collapse navbar-collapse&quot; id=&quot;navbarCollapse&quot;&amp;gt;
    &amp;lt;ul class=&quot;navbar-nav me-auto mb-2 mb-md-0&quot;&amp;gt;
        &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
            &amp;lt;a class=&quot;nav-link&quot; aria-current=&quot;page&quot; href=&quot;/main.html&quot;&amp;gt;홈&amp;lt;/a&amp;gt;
        &amp;lt;/li&amp;gt;
        &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
            &amp;lt;a class=&quot;nav-link active&quot; href=&quot;/part2/index.html&quot;&amp;gt;사칙연산 계산기&amp;lt;/a&amp;gt;
        &amp;lt;/li&amp;gt;
        &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
            &amp;lt;a class=&quot;nav-link&quot; href=&quot;/part3/index.html&quot;&amp;gt;대출이자 계산기&amp;lt;/a&amp;gt;
        &amp;lt;/li&amp;gt;
    &amp;lt;/ul&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마찬가지로 대출이자 계산기에서도 active 위치를 수정해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1712213294140&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;collapse navbar-collapse&quot; id=&quot;navbarCollapse&quot;&amp;gt;
    &amp;lt;ul class=&quot;navbar-nav me-auto mb-2 mb-md-0&quot;&amp;gt;
        &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
            &amp;lt;a class=&quot;nav-link&quot; aria-current=&quot;page&quot; href=&quot;/main.html&quot;&amp;gt;홈&amp;lt;/a&amp;gt;
        &amp;lt;/li&amp;gt;
        &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
            &amp;lt;a class=&quot;nav-link&quot; href=&quot;/part2/index.html&quot;&amp;gt;사칙연산 계산기&amp;lt;/a&amp;gt;
        &amp;lt;/li&amp;gt;
        &amp;lt;li class=&quot;nav-item&quot;&amp;gt;
            &amp;lt;a class=&quot;nav-link active&quot; href=&quot;/part3/index.html&quot;&amp;gt;대출이자 계산기&amp;lt;/a&amp;gt;
        &amp;lt;/li&amp;gt;
    &amp;lt;/ul&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;640&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cN1zIb/btsGkBNfHzD/KfESKEB3kr6sdhg7rwJKWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cN1zIb/btsGkBNfHzD/KfESKEB3kr6sdhg7rwJKWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cN1zIb/btsGkBNfHzD/KfESKEB3kr6sdhg7rwJKWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcN1zIb%2FbtsGkBNfHzD%2FKfESKEB3kr6sdhg7rwJKWk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;640&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;640&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디테일한 부분이지만 디테일을 살려야 예쁜 법이죠!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>digital520</author>
      <guid isPermaLink="true">https://digital520.tistory.com/53</guid>
      <comments>https://digital520.tistory.com/53#entry53comment</comments>
      <pubDate>Thu, 4 Apr 2024 13:18:01 +0900</pubDate>
    </item>
    <item>
      <title>Part 2. 수익형 웹 서비스 구현하기(1) - 사칙연산 계산기 만들기</title>
      <link>https://digital520.tistory.com/52</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;2-1. 사칙연산 계산기 미리보기&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;250&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boc519/btsGjLWGdnf/gIlPcWzLIx6Qmo92EtUe30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boc519/btsGjLWGdnf/gIlPcWzLIx6Qmo92EtUe30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boc519/btsGjLWGdnf/gIlPcWzLIx6Qmo92EtUe30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fboc519%2FbtsGjLWGdnf%2FgIlPcWzLIx6Qmo92EtUe30%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;250&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;250&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2-2. 사칙연산 계산기의 프로그래밍적 원리 이해하기&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;사용자가 입력하는 것은 무엇인가&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹서비스를 기획하기 앞서 우리는 먼저 사용자 입장에서 생각해야 합니다. 계산기를 사용하는 사용자는 어떤 행동을 해야하는지가 중요해요. 1차적으로 우리가 만드는 사칙연산 계산기는 단순하게 3가지를 입력받도록 할겁니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;첫 번째 숫자&lt;/li&gt;
&lt;li&gt;두 번째 숫자&lt;/li&gt;
&lt;li&gt;연산자 (더하기, 빼기, 곱하기, 나누기)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;입력받은 값을 어떻게 처리할까&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 4개의 연산자 중 더하기부터 생각합시다. 프로그래밍은 아래의 순서대로 실행되어야 합니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;첫 번째 숫자를 (어딘가에) 저장한다.&lt;/li&gt;
&lt;li&gt;두 번째 숫자를 (어딘가에) 저장한다.&lt;/li&gt;
&lt;li&gt;첫 번째 숫자와 두 번째 숫자를 더해서 더한 결과를 저장한다.&lt;/li&gt;
&lt;li&gt;더한 결과를 표시한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가장 효율적인 프로그래밍 순서는, [더하기] 버튼을 누르는 순간 1, 2, 3, 4번 모든 순서가 실행되면 한 번에 해결할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  프로그래밍에서는 어떤 값을 저장하는 공간을 변수(Variable)라고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2-3. HTML로 계산기 틀 만들기&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;보일러플레이트 코드 사용하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보일러플레이트는 프로젝트 시작 시 반복해서 사용하는 코드를 의미합니다. 우리는 앞으로 이 보일러플레이트 코드를 프로젝트 시작 시에 사용하도록 할 거에요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  원래 보일러플레이트는 19세기에 증기 보일러를 만들때 틀로 사용하는 강철판을 의미했다. 보일러플레이트에는 보일러 이름 등의 제조 정보가 음각으로 새겨져 있어서 보일러플레이트를 통과한 강철판에는 보일러 이름 등이 새겨지게 되었다. 이게 인쇄 분야로 이어져서 반복해서 사용하는 텍스트(주로 광고나 로고)를 의미하게 되었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;index.html&lt;/p&gt;
&lt;main class=&quot;container&quot;&gt;&lt;/main&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;!DOCTYPE&amp;nbsp;html&amp;gt; &lt;br /&gt;&amp;lt;html&amp;gt; &lt;br /&gt;&amp;lt;head&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;meta&amp;nbsp;charset=&quot;UTF-8&quot;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;meta&amp;nbsp;name=&quot;viewport&quot;&amp;nbsp;content=&quot;width=device-width,&amp;nbsp;initial-scale=1&quot;&amp;nbsp;/&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;title&amp;gt;Hello,&amp;nbsp;world!&amp;lt;/title&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;link&amp;nbsp;href=&quot;&lt;a href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css&lt;/a&gt;&quot;&amp;nbsp;rel=&quot;stylesheet&quot;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;link&amp;nbsp;rel=&quot;stylesheet&quot;&amp;nbsp;href=&quot;style.css&quot;&amp;gt; &lt;br /&gt;&amp;lt;/head&amp;gt; &lt;br /&gt;&amp;lt;body&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;main&amp;nbsp;class=&quot;container&quot;&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;h1&amp;gt;Hello,&amp;nbsp;world!&amp;lt;/h1&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/main&amp;gt; &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;script&amp;nbsp;src=&quot;&lt;a href=&quot;https://code.jquery.com/jquery-3.6.1.min.js&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://code.jquery.com/jquery-3.6.1.min.js&lt;/a&gt;&quot;&amp;gt;&amp;lt;/script&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;script&amp;nbsp;src=&quot;&lt;a href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&lt;/a&gt;&quot;&amp;gt;&amp;lt;/script&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;script&amp;nbsp;src=&quot;script.js&quot;&amp;gt;&amp;lt;/script&amp;gt; &lt;br /&gt;&amp;lt;/body&amp;gt; &lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;script.js&lt;/p&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;$(document).ready(function() {

});
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;style.css&lt;/p&gt;
&lt;pre class=&quot;actionscript&quot;&gt;&lt;code&gt;/* 비어있음 */
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;숫자를 입력받기 위한 텍스트박스 만들기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;계산기에서 첫 번째 숫자와 두 번째 숫자를 입력받을 텍스트박스를 2개 만들어봅시다. 텍스트박스를 만들기 위해서는 아래처럼 body의 main.container 안에 입력해줍니다.&lt;/p&gt;
&lt;pre class=&quot;fsharp&quot;&gt;&lt;code&gt;&amp;lt;input type=&quot;text&quot; id=&quot;first-number&quot; /&amp;gt;
&amp;lt;input type=&quot;text&quot; id=&quot;second-number&quot; /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;더하기 버튼 만들기&lt;/h3&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;&amp;lt;button type=&quot;button&quot; id=&quot;plus&quot;&amp;gt;더하기&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;연산 결과 보여줄 공간 만들기&lt;/h3&gt;
&lt;pre class=&quot;applescript&quot;&gt;&lt;code&gt;&amp;lt;div id=&quot;result&quot;&amp;gt;&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2-4. jQuery를 활용한 계산기 동작 이해하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;jQuery는 JavaScript를 더 쉽게 사용하기 위해 만들어진 라이브러리입니다. 다양한 브라우저에서 잘 동작하고 사용하기 쉬운 API를 통해 HTML 문서 및 조작, 이벤트 처리, 애니메이션 및 Ajax와 같은 것들을 훨씬 쉽게 만들 수 있습니다. 다재다능함과 확장성의 조합으로, 현재 전세계적으로 수백만 명의 개발자들이 사용하고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 jQuery를 사용하여 사용자가 [더하기] 버튼을 누르는 순간을 캐치하고 버튼이 클릭되는 순간 첫 번째 숫자(first-number)와 두 번째 숫자(second-number)를 받아와 저장하고 첫 번째 숫자와 두 번째 숫자를 더해서 결과(result)를 표시하려고 합니다. 이것을 아래와 같은 순서로 나타낼 수 있겠죠.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;첫 번째 숫자(first-number)를 받아와 저장한다.&lt;/li&gt;
&lt;li&gt;두 번째 숫자(second-number)를 받아와 저장한다.&lt;/li&gt;
&lt;li&gt;첫 번째 숫자와 두 번째 숫자를 더한다.&lt;/li&gt;
&lt;li&gt;더한 결과를 표시한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;클릭 인식하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 HTML을 작성할 때 버튼과 텍스트 인풋에 id를 각각 부여했습니다. 이 id는 각각의 버튼과 텍스트 인풋을 구분하기 위한 이름입니다. jQuery로 이 id를 이용하여 특정 요소를 선택할 수 있습니다. 예를 들어 버튼(plus)을 선택하고 싶다면 아래와 같이 코드를 작성합니다.&lt;/p&gt;
&lt;pre class=&quot;arcade&quot;&gt;&lt;code&gt;$(&quot;#plus&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 코드는 뜻은 id(#)가 plus인 요소를 선택한다는 뜻입니다. 우리는 더하기 버튼을 클릭했을 때 뭔가를 실행하도록 만들고 싶습니다. 그러기 위해서는 다음과 같이 코드를 작성합니다.&lt;/p&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;function plusHandler() {
    /* 더하기 버튼을 클릭하면 이 부분이 실행됩니다. */
}

$(document).ready(function() {
    $(&quot;#plus&quot;).click(plusHandler)
});
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;텍스트 값 받아오기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;clickHandler() 함수 안에 값을 받아오기 위한 코드를 작성합니다. 마찬가지로 id를 사용하여 first-number를 선택하여 값을 가져오겠습니다.&lt;/p&gt;
&lt;pre class=&quot;arcade&quot;&gt;&lt;code&gt;function plusHandler() {
    var firstNumber = $(&quot;#first-number&quot;).val();

    $(&quot;#result&quot;).text(firstNumber);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;val()을 사용하여 first-number의 값을 받아옵니다. 그리고 받아온 값을 firstNumber라는 변수에 저장합니다. 저장할 때는 = 기호를 사용합니다. 그리고 result라는 id를 가지고 있는 공간에 firstNumber 변수에 저장된 값을 텍스트로 출력(text)합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;first-number 텍스트 박스에 숫자를 입력하고 더하기 버튼을 누르면 텍스트 박스안에 있는 숫자가 그대로 표시됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;256&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWaCQH/btsGkos84NV/CcoOHtMZz2hno6brfAZ9l1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWaCQH/btsGkos84NV/CcoOHtMZz2hno6brfAZ9l1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWaCQH/btsGkos84NV/CcoOHtMZz2hno6brfAZ9l1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWaCQH%2FbtsGkos84NV%2FCcoOHtMZz2hno6brfAZ9l1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;256&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;256&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자, 이런 원리만 알고 있다면 이제 우리는 무서울 것이 없습니다. 이번엔 두 번째 숫자도 받아와보죠.&lt;/p&gt;
&lt;pre class=&quot;arcade&quot;&gt;&lt;code&gt;function plusHandler() {
    var firstNumber = $(&quot;#first-number&quot;).val();
    var secondNumber = $(&quot;#second-number&quot;).val();

    $(&quot;#result&quot;).text(firstNumber);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;second-number라는 id를 가지고 있는 요소를 선택하여 그것의 값(val)을 받아옵니다. 그리고 secondNumber라는 변수에 저장합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;더하기 구현하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 번째 숫자와 두 번째 숫자를 가져왔으니 이제 두 숫자를 더할 차례입니다. 더하기는 정말 쉽습니다.&lt;/p&gt;
&lt;pre class=&quot;arcade&quot;&gt;&lt;code&gt;function plusHandler() {
    var firstNumber = $(&quot;#first-number&quot;).val();
    var secondNumber = $(&quot;#second-number&quot;).val();

    var result = firstNumber + secondNumber;

    $(&quot;#result&quot;).text(result);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JavaScript에서 더하기는 + 기호로 구현합니다. firstNumber와 secondNumber에 저장된 값을 더해서 result 변수에 저장합니다. result 변수에 저장된 값을 id가 result인 요소에 출력합니다. 한 번 잘되는지 볼까요?&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;330&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/o3BqF/btsGjLPWI4z/gkQl4Q6j6jH6o0Xkz48cMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/o3BqF/btsGjLPWI4z/gkQl4Q6j6jH6o0Xkz48cMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/o3BqF/btsGjLPWI4z/gkQl4Q6j6jH6o0Xkz48cMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fo3BqF%2FbtsGjLPWI4z%2FgkQl4Q6j6jH6o0Xkz48cMk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;330&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;330&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리가 예상했던 결과는 3인데 12라는 엉뚱한 값이 나왔습니다. 그 이유는 val()을 사용해서 값을 가져오면 숫자가 아닌 문자(String)로 인식하기 때문입니다. 단순하게 1과 2를 앞뒤로 붙여서 12라는 결과가 나오는거죠. 3과 4를 입력하면 34가 나올 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자를 숫자로 바꾸기 위해 우리는 한 번 더 코드를 작성해야 합니다.&lt;/p&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;function plusHandler() {
    var firstNumber = $(&quot;#first-number&quot;).val();
    var secondNumber = $(&quot;#second-number&quot;).val();

    firstNumber = parseFloat(firstNumber);
    secondNumber = parseFloat(secondNumber);

    var result = firstNumber + secondNumber;

    $(&quot;#result&quot;).text(result);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;parseFloat()이라는 함수는 문자를 숫자(실수)로 바꿔주는 역할을 합니다. firstNumber에 저장된 값을 숫자로 바꿔서 firstNumber에 다시 저장하는 코드죠. 이렇게 바꿔주면 더하기가 정상적으로 동작할 겁니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;318&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMmvaI/btsGlxJRPAx/dKp0uu87EP9gBF6ECMYZC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMmvaI/btsGlxJRPAx/dKp0uu87EP9gBF6ECMYZC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMmvaI/btsGlxJRPAx/dKp0uu87EP9gBF6ECMYZC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMmvaI%2FbtsGlxJRPAx%2FdKp0uu87EP9gBF6ECMYZC0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;318&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;318&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;전체 코드&lt;/h3&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;function plusHandler() {
    var firstNumber = $(&quot;#first-number&quot;).val();
    var secondNumber = $(&quot;#second-number&quot;).val();

    firstNumber = parseFloat(firstNumber);
    secondNumber = parseFloat(secondNumber);

    var result = firstNumber + secondNumber;

    $(&quot;#result&quot;).text(result);
}

$(document).ready(function() {
    $(&quot;#plus&quot;).click(plusHandler)
});
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2-5. jQuery를 활용한 사칙연산 구현하기&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;빼기 구현하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;더하기를 구현했으니 이번엔 빼기를 구현해봅시다. 빼기도 간단합니다. 아래와 같이 구현합니다. plusHandler() 함수를 복사해서 minusHandler로 만든다음 + 를 - 기호로 바꿔주면 끝!&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;&amp;lt;button type=&quot;button&quot; id=&quot;minus&quot;&amp;gt;빼기&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;function minusHandler() {
    var firstNumber = $(&quot;#first-number&quot;).val();
    var secondNumber = $(&quot;#second-number&quot;).val();

    firstNumber = parseFloat(firstNumber);
    secondNumber = parseFloat(secondNumber);

    var result = firstNumber - secondNumber;

    $(&quot;#result&quot;).text(result);
}

$(document).ready(function() {
    $(&quot;#plus&quot;).click(plusHandler)
    $(&quot;#minus&quot;).click(minusHandler)
});
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;곱하기 구현하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JavaScript에서 곱하기 기호는 * 로 표시합니다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;&amp;lt;button type=&quot;button&quot; id=&quot;multiply&quot;&amp;gt;곱하기&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;function multiplyHandler() {
    var firstNumber = $(&quot;#first-number&quot;).val();
    var secondNumber = $(&quot;#second-number&quot;).val();

    firstNumber = parseFloat(firstNumber);
    secondNumber = parseFloat(secondNumber);

    var result = firstNumber * secondNumber;

    $(&quot;#result&quot;).text(result);
}

$(document).ready(function() {
    $(&quot;#plus&quot;).click(plusHandler)
    $(&quot;#minus&quot;).click(minusHandler)
    $(&quot;#multiply&quot;).click(multiplyHandler)
});
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;나누기 구현하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JavaScript에서 나누기 기호는 / 로 표시합니다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;&amp;lt;button type=&quot;button&quot; id=&quot;divide&quot;&amp;gt;나누기&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;function divideHandler() {
    var firstNumber = $(&quot;#first-number&quot;).val();
    var secondNumber = $(&quot;#second-number&quot;).val();

    firstNumber = parseFloat(firstNumber);
    secondNumber = parseFloat(secondNumber);

    var result = firstNumber / secondNumber;

    $(&quot;#result&quot;).text(result);
}

$(document).ready(function() {
    $(&quot;#plus&quot;).click(plusHandler)
    $(&quot;#minus&quot;).click(minusHandler)
    $(&quot;#multiply&quot;).click(multiplyHandler)
    $(&quot;#divide&quot;).click(divideHandler)
});
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;전체 코드&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;345&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Xy6yr/btsGmvq2Ahn/40YRyRFjqvPcRDacYMfn61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Xy6yr/btsGmvq2Ahn/40YRyRFjqvPcRDacYMfn61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Xy6yr/btsGmvq2Ahn/40YRyRFjqvPcRDacYMfn61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXy6yr%2FbtsGmvq2Ahn%2F40YRyRFjqvPcRDacYMfn61%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;345&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;345&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1712194627429&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&amp;gt;
    &amp;lt;title&amp;gt;계산기&amp;lt;/title&amp;gt;
    &amp;lt;link href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;main class=&quot;container&quot;&amp;gt;
        &amp;lt;h1&amp;gt;계산기&amp;lt;/h1&amp;gt;

        &amp;lt;input type=&quot;text&quot; id=&quot;first-number&quot; /&amp;gt;
        &amp;lt;input type=&quot;text&quot; id=&quot;second-number&quot; /&amp;gt;

        &amp;lt;button type=&quot;button&quot; id=&quot;plus&quot;&amp;gt;더하기&amp;lt;/button&amp;gt;
        &amp;lt;button type=&quot;button&quot; id=&quot;minus&quot;&amp;gt;빼기&amp;lt;/button&amp;gt;
        &amp;lt;button type=&quot;button&quot; id=&quot;multiply&quot;&amp;gt;곱하기&amp;lt;/button&amp;gt;
        &amp;lt;button type=&quot;button&quot; id=&quot;divide&quot;&amp;gt;나누기&amp;lt;/button&amp;gt;

        &amp;lt;div id=&quot;result&quot;&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;/main&amp;gt;

    &amp;lt;script src=&quot;https://code.jquery.com/jquery-3.6.1.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;script.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;function plusHandler() {
    var firstNumber = $(&quot;#first-number&quot;).val();
    var secondNumber = $(&quot;#second-number&quot;).val();

    firstNumber = parseFloat(firstNumber);
    secondNumber = parseFloat(secondNumber);

    var result = firstNumber + secondNumber;

    $(&quot;#result&quot;).text(result);
}

function minusHandler() {
    var firstNumber = $(&quot;#first-number&quot;).val();
    var secondNumber = $(&quot;#second-number&quot;).val();

    firstNumber = parseFloat(firstNumber);
    secondNumber = parseFloat(secondNumber);

    var result = firstNumber - secondNumber;

    $(&quot;#result&quot;).text(result);
}

function multiplyHandler() {
    var firstNumber = $(&quot;#first-number&quot;).val();
    var secondNumber = $(&quot;#second-number&quot;).val();

    firstNumber = parseFloat(firstNumber);
    secondNumber = parseFloat(secondNumber);

    var result = firstNumber * secondNumber;

    $(&quot;#result&quot;).text(result);
}

function divideHandler() {
    var firstNumber = $(&quot;#first-number&quot;).val();
    var secondNumber = $(&quot;#second-number&quot;).val();

    firstNumber = parseFloat(firstNumber);
    secondNumber = parseFloat(secondNumber);

    var result = firstNumber / secondNumber;

    $(&quot;#result&quot;).text(result);
}

$(document).ready(function() {
    $(&quot;#plus&quot;).click(plusHandler)
    $(&quot;#minus&quot;).click(minusHandler)
    $(&quot;#multiply&quot;).click(multiplyHandler)
    $(&quot;#divide&quot;).click(divideHandler)
});
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2-6. Bootstrap을 활용한 계산기 디자인 꾸미기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 동작하는 계산기를 만들었습니다. 한 가지 아쉬운 점은 디자인이겠죠? 유려한 디자인을 가진 서비스일수록 사람들이 선호하기 마련입니다. 우리는 디자인을 하기위해 Bootstrap(부트스트랩)이라는 HTML, CSS 프레임워크를 사용하도록 하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Bootstrap은 강력하고 확장 가능하며 기능이 풍부한 프론트엔드 툴킷입니다. 다양한 그리드 시스템과 구성요소를 활용하며 웹 서비스에 활기를 불어넣을 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  위키피디아의 설명에 따르면 부트스트랩이란 Boot(s) + Strap의 합성어로서 부츠(Boots)의 뒷 부분에 달린 끈 혹은 고리(Strap)를 말합니다. 이 부트스트랩은 요즘 신발에도 달려나온다. 불가능한 일을 자력으로 해낸다는 의미인데 컴퓨터 분야에서는 보통 한 번 시작하면 다른 외부의 도움없이 스스로 진행하는 행위를 통틀어 사용하고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출처: &lt;a href=&quot;https://www.wisewiredbooks.com/term-dict/common/bootstrap.html&quot;&gt;https://www.wisewiredbooks.com/term-dict/common/bootstrap.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;593&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JHdoM/btsGj3Jxh5Y/IaFzSSCdlOAkkHNaXYoKe1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JHdoM/btsGj3Jxh5Y/IaFzSSCdlOAkkHNaXYoKe1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JHdoM/btsGj3Jxh5Y/IaFzSSCdlOAkkHNaXYoKe1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJHdoM%2FbtsGj3Jxh5Y%2FIaFzSSCdlOAkkHNaXYoKe1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;860&quot; height=&quot;593&quot; data-origin-width=&quot;860&quot; data-origin-height=&quot;593&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Bootstrap 예시&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://getbootstrap.com/docs/5.2/examples/&quot;&gt;https://getbootstrap.com/docs/5.2/examples/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712194682246&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Examples&quot; data-og-description=&quot;Quickly get a project started with any of our examples ranging from using parts of the framework to custom components and layouts.&quot; data-og-host=&quot;getbootstrap.com&quot; data-og-source-url=&quot;https://getbootstrap.com/docs/5.2/examples/&quot; data-og-url=&quot;https://getbootstrap.com/docs/5.2/examples/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/KGYTr/hyVJ5Rv5EP/EqyKRT6pFuJT78rBboE0Kk/img.png?width=2000&amp;amp;height=1000&amp;amp;face=0_0_2000_1000,https://scrap.kakaocdn.net/dn/dZydyR/hyVJ3MVVKa/KAvvvOt6VQMh74mxb7ZzF0/img.png?width=480&amp;amp;height=300&amp;amp;face=0_0_480_300&quot;&gt;&lt;a href=&quot;https://getbootstrap.com/docs/5.2/examples/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://getbootstrap.com/docs/5.2/examples/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/KGYTr/hyVJ5Rv5EP/EqyKRT6pFuJT78rBboE0Kk/img.png?width=2000&amp;amp;height=1000&amp;amp;face=0_0_2000_1000,https://scrap.kakaocdn.net/dn/dZydyR/hyVJ3MVVKa/KAvvvOt6VQMh74mxb7ZzF0/img.png?width=480&amp;amp;height=300&amp;amp;face=0_0_480_300');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Examples&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Quickly get a project started with any of our examples ranging from using parts of the framework to custom components and layouts.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;getbootstrap.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;846&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wZmgd/btsGjZAlCeJ/eflGbDqfGkt7MNoEPcx3Y1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wZmgd/btsGjZAlCeJ/eflGbDqfGkt7MNoEPcx3Y1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wZmgd/btsGjZAlCeJ/eflGbDqfGkt7MNoEPcx3Y1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwZmgd%2FbtsGjZAlCeJ%2FeflGbDqfGkt7MNoEPcx3Y1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;846&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;846&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Bootstrap 문서&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://getbootstrap.com/docs/5.2/getting-started/introduction/&quot;&gt;https://getbootstrap.com/docs/5.2/getting-started/introduction/&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Bootstrap의 문서를 참고해서 한 번 디자인해보도록 하죠. 위의 문서를 보면 Bootstrap에서 제공하는 다양한 구성요소(Components)들을 복사+붙여넣기로 사용할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 버튼 애드온으로 한 번 구현해보도록 하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버튼 애드온 예제: &lt;a href=&quot;https://getbootstrap.com/docs/5.2/forms/input-group/#button-addons&quot;&gt;https://getbootstrap.com/docs/5.2/forms/input-group/#button-addons&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712194758149&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Input group&quot; data-og-description=&quot;Easily extend form controls by adding text, buttons, or button groups on either side of textual inputs, custom selects, and custom file inputs.&quot; data-og-host=&quot;getbootstrap.com&quot; data-og-source-url=&quot;https://getbootstrap.com/docs/5.2/forms/input-group/#button-addons&quot; data-og-url=&quot;https://getbootstrap.com/docs/5.2/forms/input-group/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/c9PgGL/hyVJVVEUAq/O4k6kKnKRK5aT8LrKOLiX0/img.png?width=2000&amp;amp;height=1000&amp;amp;face=0_0_2000_1000&quot;&gt;&lt;a href=&quot;https://getbootstrap.com/docs/5.2/forms/input-group/#button-addons&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://getbootstrap.com/docs/5.2/forms/input-group/#button-addons&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/c9PgGL/hyVJVVEUAq/O4k6kKnKRK5aT8LrKOLiX0/img.png?width=2000&amp;amp;height=1000&amp;amp;face=0_0_2000_1000');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Input group&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Easily extend form controls by adding text, buttons, or button groups on either side of textual inputs, custom selects, and custom file inputs.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;getbootstrap.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1301&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/caT6ca/btsGkpyOGfC/Vodl5WurE1uPHD8G2XwvJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/caT6ca/btsGkpyOGfC/Vodl5WurE1uPHD8G2XwvJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/caT6ca/btsGkpyOGfC/Vodl5WurE1uPHD8G2XwvJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcaT6ca%2FbtsGkpyOGfC%2FVodl5WurE1uPHD8G2XwvJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1301&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1301&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Button Addon 구현하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버튼 애드온 예제에서 가장 마지막 예제를 복사해서 index.html 파일에 붙여넣습니다.&lt;/p&gt;
&lt;pre class=&quot;scala&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;input-group&quot;&amp;gt;
    &amp;lt;input type=&quot;text&quot; class=&quot;form-control&quot; placeholder=&quot;Recipient's username&quot; aria-label=&quot;Recipient's username with two button addons&quot;&amp;gt;
    &amp;lt;button class=&quot;btn btn-outline-secondary&quot; type=&quot;button&quot;&amp;gt;Button&amp;lt;/button&amp;gt;
    &amp;lt;button class=&quot;btn btn-outline-secondary&quot; type=&quot;button&quot;&amp;gt;Button&amp;lt;/button&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;381&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWIWxg/btsGkri62Pl/kP1MtBUSLkRylsxDBQmuf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWIWxg/btsGkri62Pl/kP1MtBUSLkRylsxDBQmuf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWIWxg/btsGkri62Pl/kP1MtBUSLkRylsxDBQmuf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWIWxg%2FbtsGkri62Pl%2FkP1MtBUSLkRylsxDBQmuf1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;381&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;381&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버튼 애드온을 조금씩 수정해서 우리가 원하는 모양으로 만들어줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버튼 색 변경 예제: &lt;a href=&quot;https://getbootstrap.com/docs/5.2/components/buttons/#outline-buttons&quot;&gt;https://getbootstrap.com/docs/5.2/components/buttons/#outline-buttons&lt;/a&gt;&lt;/p&gt;
&lt;pre class=&quot;scala&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;input-group&quot;&amp;gt;
    &amp;lt;input type=&quot;text&quot; class=&quot;form-control&quot; placeholder=&quot;첫 번째 숫자&quot;&amp;gt;
    &amp;lt;input type=&quot;text&quot; class=&quot;form-control&quot; placeholder=&quot;두 번째 숫자&quot;&amp;gt;

    &amp;lt;button class=&quot;btn btn-outline-success&quot; type=&quot;button&quot;&amp;gt;더하기&amp;lt;/button&amp;gt;
    &amp;lt;button class=&quot;btn btn-outline-danger&quot; type=&quot;button&quot;&amp;gt;빼기&amp;lt;/button&amp;gt;
    &amp;lt;button class=&quot;btn btn-outline-primary&quot; type=&quot;button&quot;&amp;gt;곱하기&amp;lt;/button&amp;gt;
    &amp;lt;button class=&quot;btn btn-outline-warning&quot; type=&quot;button&quot;&amp;gt;나누기&amp;lt;/button&amp;gt;
    &amp;lt;span class=&quot;input-group-text&quot;&amp;gt;&amp;lt;/span&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;367&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bV4lpL/btsGmX1T6kZ/SAuzrkVBMns5n1vr4od72k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bV4lpL/btsGmX1T6kZ/SAuzrkVBMns5n1vr4od72k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bV4lpL/btsGmX1T6kZ/SAuzrkVBMns5n1vr4od72k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbV4lpL%2FbtsGmX1T6kZ%2FSAuzrkVBMns5n1vr4od72k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;367&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;367&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디자인이 조금 나아졌습니다. 하지만 계산기가 동작하지 않습니다. 왜일까요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 jQuery를 사용하여 id로 값을 받아오고 클릭을 인식했는데 우리가 지금 작성한 HTML 코드에는 id가 없어서 동작하지 않습니다. 각각의 텍스트 박스와 버튼 그리고 결과 공간에 id를 부여해줍시다. 그리고 처음에 작성한 코드는 지워줍니다. 그리고 계산기를 완성합니다!&lt;/p&gt;
&lt;pre class=&quot;scala&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;input-group&quot;&amp;gt;
    &amp;lt;input type=&quot;text&quot; class=&quot;form-control&quot; placeholder=&quot;첫 번째 숫자&quot; id=&quot;first-number&quot;&amp;gt;
    &amp;lt;input type=&quot;text&quot; class=&quot;form-control&quot; placeholder=&quot;두 번째 숫자&quot; id=&quot;second-number&quot;&amp;gt;

    &amp;lt;button class=&quot;btn btn-outline-success&quot; type=&quot;button&quot; id=&quot;plus&quot;&amp;gt;더하기&amp;lt;/button&amp;gt;
    &amp;lt;button class=&quot;btn btn-outline-danger&quot; type=&quot;button&quot; id=&quot;minus&quot;&amp;gt;빼기&amp;lt;/button&amp;gt;
    &amp;lt;button class=&quot;btn btn-outline-primary&quot; type=&quot;button&quot; id=&quot;multiply&quot;&amp;gt;곱하기&amp;lt;/button&amp;gt;
    &amp;lt;button class=&quot;btn btn-outline-warning&quot; type=&quot;button&quot; id=&quot;divide&quot;&amp;gt;나누기&amp;lt;/button&amp;gt;
    &amp;lt;span class=&quot;input-group-text&quot; id=&quot;result&quot;&amp;gt;&amp;lt;/span&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;250&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cTcyVd/btsGj3W3oRn/J22jtbL1EeTHLPKHxxjoVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cTcyVd/btsGj3W3oRn/J22jtbL1EeTHLPKHxxjoVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cTcyVd/btsGj3W3oRn/J22jtbL1EeTHLPKHxxjoVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcTcyVd%2FbtsGj3W3oRn%2FJ22jtbL1EeTHLPKHxxjoVk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;250&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;250&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;전체 코드&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;index.html&lt;/p&gt;
&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;    
    &amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset=&quot;UTF-8&quot;&amp;gt;
    &amp;lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot; /&amp;gt;
    &amp;lt;title&amp;gt;계산기&amp;lt;/title&amp;gt;
    &amp;lt;link href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/css/bootstrap.min.css&quot; rel=&quot;stylesheet&quot;&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;style.css&quot;&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;main class=&quot;container&quot;&amp;gt;
        &amp;lt;h1&amp;gt;계산기&amp;lt;/h1&amp;gt;

        &amp;lt;div class=&quot;input-group&quot;&amp;gt;
            &amp;lt;input type=&quot;text&quot; class=&quot;form-control&quot; placeholder=&quot;첫 번째 숫자&quot; id=&quot;first-number&quot;&amp;gt;
            &amp;lt;input type=&quot;text&quot; class=&quot;form-control&quot; placeholder=&quot;두 번째 숫자&quot; id=&quot;second-number&quot;&amp;gt;

            &amp;lt;button class=&quot;btn btn-outline-success&quot; type=&quot;button&quot; id=&quot;plus&quot;&amp;gt;더하기&amp;lt;/button&amp;gt;
            &amp;lt;button class=&quot;btn btn-outline-danger&quot; type=&quot;button&quot; id=&quot;minus&quot;&amp;gt;빼기&amp;lt;/button&amp;gt;
            &amp;lt;button class=&quot;btn btn-outline-primary&quot; type=&quot;button&quot; id=&quot;multiply&quot;&amp;gt;곱하기&amp;lt;/button&amp;gt;
            &amp;lt;button class=&quot;btn btn-outline-warning&quot; type=&quot;button&quot; id=&quot;divide&quot;&amp;gt;나누기&amp;lt;/button&amp;gt;
            &amp;lt;span class=&quot;input-group-text&quot; id=&quot;result&quot;&amp;gt;&amp;lt;/span&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/main&amp;gt;

    &amp;lt;script src=&quot;https://code.jquery.com/jquery-3.6.1.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@5.2.2/dist/js/bootstrap.bundle.min.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;script.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;main class=&quot;container&quot;&gt;
&lt;div class=&quot;input-group&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/main&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;script.js&lt;/p&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;function plusHandler() {
    var firstNumber = $(&quot;#first-number&quot;).val();
    var secondNumber = $(&quot;#second-number&quot;).val();

    firstNumber = parseFloat(firstNumber);
    secondNumber = parseFloat(secondNumber);

    var result = firstNumber + secondNumber;

    $(&quot;#result&quot;).text(result);
}

function minusHandler() {
    var firstNumber = $(&quot;#first-number&quot;).val();
    var secondNumber = $(&quot;#second-number&quot;).val();

    firstNumber = parseFloat(firstNumber);
    secondNumber = parseFloat(secondNumber);

    var result = firstNumber - secondNumber;

    $(&quot;#result&quot;).text(result);
}

function multiplyHandler() {
    var firstNumber = $(&quot;#first-number&quot;).val();
    var secondNumber = $(&quot;#second-number&quot;).val();

    firstNumber = parseFloat(firstNumber);
    secondNumber = parseFloat(secondNumber);

    var result = firstNumber * secondNumber;

    $(&quot;#result&quot;).text(result);
}

function divideHandler() {
    var firstNumber = $(&quot;#first-number&quot;).val();
    var secondNumber = $(&quot;#second-number&quot;).val();

    firstNumber = parseFloat(firstNumber);
    secondNumber = parseFloat(secondNumber);

    var result = firstNumber / secondNumber;

    $(&quot;#result&quot;).text(result);
}

$(document).ready(function() {
    $(&quot;#plus&quot;).click(plusHandler)
    $(&quot;#minus&quot;).click(minusHandler)
    $(&quot;#multiply&quot;).click(multiplyHandler)
    $(&quot;#divide&quot;).click(divideHandler)
});
&lt;/code&gt;&lt;/pre&gt;
&lt;h1&gt;&amp;nbsp;&lt;/h1&gt;
&lt;main class=&quot;container&quot;&gt;
&lt;div class=&quot;input-group&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/main&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>digital520</author>
      <guid isPermaLink="true">https://digital520.tistory.com/52</guid>
      <comments>https://digital520.tistory.com/52#entry52comment</comments>
      <pubDate>Thu, 4 Apr 2024 10:45:01 +0900</pubDate>
    </item>
    <item>
      <title>Part 1. 초보자도 가능한 웹 개발 기초와 실습</title>
      <link>https://digital520.tistory.com/51</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;1-1. 웹 서비스 수익 확인하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구글에 여러가지 웹 서비스를 검색하여 예상 방문자 수, 예상 페이지 조회수를 통해 예상 수익을 계산할 수 있습니다. 구글에 &amp;ldquo;온라인 메모장&amp;rdquo;이라고 검색해서 가장 상단에 나오는 웹사이트에 들어가봅시다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;온라인 메모장 웹 서비스&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;894&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbrTUU/btsGmuZY66K/rKNFp7aSJj6futTCrrUVyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbrTUU/btsGmuZY66K/rKNFp7aSJj6futTCrrUVyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbrTUU/btsGmuZY66K/rKNFp7aSJj6futTCrrUVyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbrTUU%2FbtsGmuZY66K%2FrKNFp7aSJj6futTCrrUVyk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;894&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;894&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;894&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d7sF2s/btsGl1X0MPe/btWCPNgmVEnugJ4nf8u26K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d7sF2s/btsGl1X0MPe/btWCPNgmVEnugJ4nf8u26K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d7sF2s/btsGl1X0MPe/btWCPNgmVEnugJ4nf8u26K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd7sF2s%2FbtsGl1X0MPe%2FbtWCPNgmVEnugJ4nf8u26K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;894&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;894&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오른쪽과 아래쪽에 구글 광고가 삽입되어 있습니다. 이 페이지의 월간 방문자 수와 페이지 조회수를 예측해주는 웹사이트인 시밀러 웹(&lt;a href=&quot;https://www.similarweb.com&quot;&gt;https://www.similarweb.com&lt;/a&gt;)에서 트래픽을 확인해보겠습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;894&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cIAuZY/btsGlwjV4EU/XuKk8PzTPJlM46NADIandK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cIAuZY/btsGlwjV4EU/XuKk8PzTPJlM46NADIandK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cIAuZY/btsGlwjV4EU/XuKk8PzTPJlM46NADIandK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcIAuZY%2FbtsGlwjV4EU%2FXuKk8PzTPJlM46NADIandK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;894&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;894&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 웹사이트의 2022년 9월 기준 월간 방문자(Total Visits)는 557.9K로 55만 방문자이며 방문자 당 둘러본 페이지 수(Page per Visit)는 1.47개 입니다. 월간 총 페이지 조회수는 아래처럼 계산할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;fix&quot;&gt;&lt;code&gt;월간 페이지 조회수 = 월간 방문자 수 x 방문자 당 둘러본 페이지 수
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 온라인 메모장의 월간 페이지 방문수는 55만 곱하기 1.47 = 808,500회 입니다. 이 숫자를 구글 애드센스 웹사이트에 들어가 예상 수익을 계산해봅시다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;894&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOqkrk/btsGmwDt4EA/2cOzJUxBaG7krgHBINAc20/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOqkrk/btsGmwDt4EA/2cOzJUxBaG7krgHBINAc20/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOqkrk/btsGmwDt4EA/2cOzJUxBaG7krgHBINAc20/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOqkrk%2FbtsGmwDt4EA%2F2cOzJUxBaG7krgHBINAc20%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;894&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;894&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;935&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQFLUN/btsGmyg0i2h/VWewjAritlQh5tKzeCHyt1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQFLUN/btsGmyg0i2h/VWewjAritlQh5tKzeCHyt1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQFLUN/btsGmyg0i2h/VWewjAritlQh5tKzeCHyt1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQFLUN%2FbtsGmyg0i2h%2FVWewjAritlQh5tKzeCHyt1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;935&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;935&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연간 10만 달러(한화 약 1억 4,200만원)를 벌 수 있습니다. 페이지 방문자, 페이지 조회수, 광고 수익 모두 예상 수치이니 보수적으로 잡아 1년에 약 1억원 정도 벌 수 있다고 생각하면 되겠네요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;날씨 웹 서비스&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AccuWeather(&lt;a href=&quot;https://www.accuweather.com&quot;&gt;https://www.accuweather.com&lt;/a&gt;)라는 웹 서비스를 살펴봅시다. 역시 구글 애드센스가 삽입되어 있습니다. 단순하게 날씨를 보여주는 웹사이트입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;894&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/O7qun/btsGmBx0pGU/aYJ86pSOa12k67l0C6KABK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/O7qun/btsGmBx0pGU/aYJ86pSOa12k67l0C6KABK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/O7qun/btsGmBx0pGU/aYJ86pSOa12k67l0C6KABK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FO7qun%2FbtsGmBx0pGU%2FaYJ86pSOa12k67l0C6KABK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;894&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;894&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마찬가지로 시밀러웹에서 트래픽을 조사해봅시다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;894&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ea8Rd1/btsGme37zXV/sMndYjkLsEc0lHgOoW2N81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ea8Rd1/btsGme37zXV/sMndYjkLsEc0lHgOoW2N81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ea8Rd1/btsGme37zXV/sMndYjkLsEc0lHgOoW2N81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fea8Rd1%2FbtsGme37zXV%2FsMndYjkLsEc0lHgOoW2N81%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;894&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;894&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2022년 9월 총 방문자 수 588.3M(5억 8천만명), 방문자당 페이지 방문 수 2.5페이지로 엄청난 트래픽을 자랑합니다. 총 페이지 방문수는 5억 8천만 곱하기 2.5 = 14억 5천만 회입니다. 이 숫자가 너무커서 구글 애드센스에서 예상 수익을 계산할 수가 없군요. 구글 애드센스에서는 월간 페이지 뷰 1천만까지만 예상 수익을 계산할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;894&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rvBaQ/btsGkCYZ0ma/S8xaIHjxjM8KMVEuC0Waf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rvBaQ/btsGkCYZ0ma/S8xaIHjxjM8KMVEuC0Waf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rvBaQ/btsGkCYZ0ma/S8xaIHjxjM8KMVEuC0Waf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrvBaQ%2FbtsGkCYZ0ma%2FS8xaIHjxjM8KMVEuC0Waf0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;894&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;894&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;월별 페이지 조회수가 1천만일 때 연 예상 수익이 130만 달러(18억원)이므로 14억 5천만 조회수일 때는 어림잡아 18억원 곱하기 145를 하면 됩니다. 약 2,610억원 정도 되네요. 보수적으로 잡아 연 2,000억원 정도의 광고 수익을 올릴 수 있을 것으로 보입니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1-2. 실무 웹 개발과 수익형 웹 개발의 차이점에 대해 알아보기&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;웹 개발자 직군 정리&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;1198&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcRKSJ/btsGl3BzQlv/9iSDK8LLIbfFQhyxRNoKv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcRKSJ/btsGl3BzQlv/9iSDK8LLIbfFQhyxRNoKv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcRKSJ/btsGl3BzQlv/9iSDK8LLIbfFQhyxRNoKv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcRKSJ%2FbtsGl3BzQlv%2F9iSDK8LLIbfFQhyxRNoKv1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1200&quot; height=&quot;1198&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;1198&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출처 &lt;a href=&quot;https://emptydream.tistory.com/3918&quot;&gt;https://emptydream.tistory.com/3918&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712193632250&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;웹 개발자 직군 정리 - 백앤드, 프론트 앤드, 퍼블리셔 등&quot; data-og-description=&quot;의외로 업계 종사자 중에서도 모르는 사람들이 꽤 많아서 나름대로 정리를 해 봄. 이것은 개인의 경험을 정리한 것이고, 조직에 따라 상황에 따라 다른 기준이 적용될 수 있으므로 딱 정답이라&quot; data-og-host=&quot;emptydream.tistory.com&quot; data-og-source-url=&quot;https://emptydream.tistory.com/3918&quot; data-og-url=&quot;https://emptydream.tistory.com/3918&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ckMCFG/hyVJ03IVvH/NZ0QYkeKqhY7IkY8ck5nS0/img.jpg?width=600&amp;amp;height=599&amp;amp;face=541_511_563_535,https://scrap.kakaocdn.net/dn/y5dA4/hyVJ3TH51W/4SQzLiVzQr3SKWFsTfeDb1/img.jpg?width=600&amp;amp;height=599&amp;amp;face=541_511_563_535,https://scrap.kakaocdn.net/dn/wlCbs/hyVJUbmuln/BpsHgWMuxUSYjJCpKLn4oK/img.jpg?width=600&amp;amp;height=599&amp;amp;face=541_511_563_535&quot;&gt;&lt;a href=&quot;https://emptydream.tistory.com/3918&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://emptydream.tistory.com/3918&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ckMCFG/hyVJ03IVvH/NZ0QYkeKqhY7IkY8ck5nS0/img.jpg?width=600&amp;amp;height=599&amp;amp;face=541_511_563_535,https://scrap.kakaocdn.net/dn/y5dA4/hyVJ3TH51W/4SQzLiVzQr3SKWFsTfeDb1/img.jpg?width=600&amp;amp;height=599&amp;amp;face=541_511_563_535,https://scrap.kakaocdn.net/dn/wlCbs/hyVJUbmuln/BpsHgWMuxUSYjJCpKLn4oK/img.jpg?width=600&amp;amp;height=599&amp;amp;face=541_511_563_535');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;웹 개발자 직군 정리 - 백앤드, 프론트 앤드, 퍼블리셔 등&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;의외로 업계 종사자 중에서도 모르는 사람들이 꽤 많아서 나름대로 정리를 해 봄. 이것은 개인의 경험을 정리한 것이고, 조직에 따라 상황에 따라 다른 기준이 적용될 수 있으므로 딱 정답이라&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;emptydream.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;프론트엔드 개발자 Front-end developer
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;사용자에게 보이는 로직 부분을 담당 (JavaScript)&lt;/li&gt;
&lt;li&gt;로그인 페이지에서 사용자가 아이디, 비밀번호를 전부 잘 입력했는지, 비밀번호가 8자리 이상인지 등을 확인&lt;/li&gt;
&lt;li&gt;프론트엔드 개발을 도와주는 라이브러리
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;jQuery&lt;/li&gt;
&lt;li&gt;React.js&lt;/li&gt;
&lt;li&gt;Vue.js&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;백엔드 개발자 Back-end developer
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;서버에서 웹 서비스가 돌아가는 로직 개발 담당&lt;/li&gt;
&lt;li&gt;사용자 로그인 시도시 아이디, 비밀번호 일치하는지 확인&lt;/li&gt;
&lt;li&gt;백엔드 개발에 사용하는 언어
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Node.js&lt;/li&gt;
&lt;li&gt;Python (Django, Flask)&lt;/li&gt;
&lt;li&gt;Java (Spring)&lt;/li&gt;
&lt;li&gt;GO&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;데이터베이스 개발자 Database developer
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;데이터를 어떻게 효율적으로 저장할지 설계하는 역할&lt;/li&gt;
&lt;li&gt;아이디, 비밀번호를 어떤 데이터 타입으로 저장하고 암호화할지 설계&lt;/li&gt;
&lt;li&gt;데이터베이스 종류
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Oracle&lt;/li&gt;
&lt;li&gt;MySQL (MariaDB)&lt;/li&gt;
&lt;li&gt;MongoDB&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;웹 퍼블리셔 Web publisher
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;사용자에게 보이는 디자인 부분을 담당 (HTML, CSS)&lt;/li&gt;
&lt;li&gt;로그인 화면에서 아이디, 비밀번호 텍스트박스, 로그인 버튼을 예쁘게 보이도록 꾸미고 배치&lt;/li&gt;
&lt;li&gt;퍼블리싱을 도와주는 프레임워크
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Bootstrap&lt;/li&gt;
&lt;li&gt;Material Design&lt;/li&gt;
&lt;li&gt;Tailwind CSS&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;☝ 우리 수업에서는 프론트엔드와 퍼블리싱 부분을 다룹니다. 특히 프론트엔드 입문 부분에 집중할 예정이고 퍼블리싱 부분은 이미 구현되어 있는 코드를 쉽게 가져다 사용할 수 있는 방법에 대해 알아볼거에요!&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1-3. 웹 개발 프로그래밍 언어 및 툴에 대해 알아보기&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;800&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/craav2/btsGj4aBfmT/DdzBYkiQ3yoDbKfIajhO9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/craav2/btsGj4aBfmT/DdzBYkiQ3yoDbKfIajhO9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/craav2/btsGj4aBfmT/DdzBYkiQ3yoDbKfIajhO9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcraav2%2FbtsGj4aBfmT%2FDdzBYkiQ3yoDbKfIajhO9K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;800&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;800&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출처 &lt;a href=&quot;https://morioh.com/p/8ae9a2ad64a7&quot;&gt;https://morioh.com/p/8ae9a2ad64a7&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712192907746&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;How To Make A Website Using HTML CSS And JavaScript Step By Step&quot; data-og-description=&quot;Here in this video, you will learn how to make this website design using HTML, CSS and JavaScript. At the top there is a navigation bar with logo and navigation menu. Website's background looks very nice because of angle shape and gradient color.&quot; data-og-host=&quot;morioh.com&quot; data-og-source-url=&quot;https://morioh.com/p/8ae9a2ad64a7&quot; data-og-url=&quot;https://morioh.com/a/8ae9a2ad64a7/how-to-make-a-website-using-html-css-and-javascript-step-by-step&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/5OjTV/hyVJTjeSn5/mDCK9k4itfqF5J2anlJKk0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/4SMCK/hyVJ28jGSM/kFx2qQlL2iLhiQU29U9fUK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/bFO8Z9/hyVJUCsgmr/K2OaZLdO9xcxR8Aiurjfk0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot;&gt;&lt;a href=&quot;https://morioh.com/p/8ae9a2ad64a7&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://morioh.com/p/8ae9a2ad64a7&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/5OjTV/hyVJTjeSn5/mDCK9k4itfqF5J2anlJKk0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/4SMCK/hyVJ28jGSM/kFx2qQlL2iLhiQU29U9fUK/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720,https://scrap.kakaocdn.net/dn/bFO8Z9/hyVJUCsgmr/K2OaZLdO9xcxR8Aiurjfk0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;How To Make A Website Using HTML CSS And JavaScript Step By Step&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Here in this video, you will learn how to make this website design using HTML, CSS and JavaScript. At the top there is a navigation bar with logo and navigation menu. Website's background looks very nice because of angle shape and gradient color.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;morioh.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;자바스크립트 JavaScript&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프론트엔드 로직 작성에 있어 절대 빠질 수 없는 언어&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ecma International의 프로토타입 기반의 프로그래밍 언어로, 스크립트 언어에 해당된다. 특수한 목적이 아닌 이상 모든 웹 브라우저에 인터프리터가 내장되어 있다. 오늘날 HTML, CSS와 함께 웹을 구성하는 요소 중 하나다. HTML이 웹 페이지의 기본 구조를 담당하고, CSS가 디자인을 담당한다면 JavaScript는 클라이언트 단에서 웹 페이지가 동작하는 것을 담당한다.[1] 웹 페이지를 자동차에 비유하자면, HTML은 자동차의 뼈대, CSS는 자동차의 외관, JavaScript는 자동차의 동력이라고 볼 수 있다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;나무위키 발췌&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;document.write(&quot;Hello, world!&quot;); // HTML 문서에 출력된다.
alert(&quot;Hello, world!&quot;); // 알림창으로 출력된다.
console.log(&quot;Hello, world!&quot;); // 보통 F12(또는 Ctrl+Shift+I / macOS의 경우에는 ⌘+⌥+I)를 누르면 보이는 콘솔 창에 출력된다.
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;HTML&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보이는 부분의 뼈대, 정확하게는 프로그래밍 언어가 아닌 마크업 언어라고 부름.&lt;/p&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE HTML&amp;gt;
&amp;lt;html&amp;gt;
    &amp;lt;head&amp;gt;
    &amp;lt;/head&amp;gt;
    &amp;lt;body&amp;gt;
        Hello, world!
    &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;CSS&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보이는 부분의 디자인, 정확하게는 프로그래밍 언어가 아닌 스타일시트 언어라고 부름.&lt;/p&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;body {
  margin-left: 200px;
  background: #5d9ab2 url(&quot;img_tree.png&quot;) no-repeat top left;
}

.center_div {
  border: 1px solid gray;
  margin-left: auto;
  margin-right: auto;
  width: 90%;
  background-color: #d0f0f6;
  text-align: left;
  padding: 8px;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;삼형제를 모두 합치면? 이런 형태가 웹의 기본 구조&lt;/h3&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;head&amp;gt;
&amp;lt;style&amp;gt;
body {
  margin-left: 200px;
  background: #5d9ab2 url(&quot;img_tree.png&quot;) no-repeat top left;
}

.center_div {
  border: 1px solid gray;
  margin-left: auto;
  margin-right: auto;
  width: 90%;
  background-color: #d0f0f6;
  text-align: left;
  padding: 8px;
}
&amp;lt;/style&amp;gt;
&amp;lt;/head&amp;gt;

&amp;lt;body&amp;gt;

&amp;lt;div class=&quot;center_div&quot;&amp;gt;
  &amp;lt;h1&amp;gt;Hello World!&amp;lt;/h1&amp;gt;
  &amp;lt;p&amp;gt;This example contains some advanced CSS methods you may not have learned yet. But, we will explain these methods in a later chapter in the tutorial.&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;script&amp;gt;
document.write(&quot;Hello, world!&quot;);
alert(&quot;Hello, world!&quot;);
console.log(&quot;Hello, world!&quot;);
&amp;lt;/script&amp;gt;

&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1-4. 가장 쉬운 개발 툴 설치 및 개발 환경 세팅&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Visual Studio Code 설치&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비주얼 스튜디오 코드(이하 VSCode)는 개발자들이 가장 많이 사용하는 코드 에디터(코드 작성용 메모장)중 하나입니다. 코딩을 도와주는 다양한 플러그인을 무료로 제공하고 자동완성 기능 등이 내장되어 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이곳에서 VSCode를 다운로드 받아주세요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;988&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BmzN0/btsGj1rpy04/C8YuTqV3i4XfIMKJqWK1o1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BmzN0/btsGj1rpy04/C8YuTqV3i4XfIMKJqWK1o1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BmzN0/btsGj1rpy04/C8YuTqV3i4XfIMKJqWK1o1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBmzN0%2FbtsGj1rpy04%2FC8YuTqV3i4XfIMKJqWK1o1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;988&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;988&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://code.visualstudio.com/Download&quot;&gt;https://code.visualstudio.com/Download&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712193255498&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Download Visual Studio Code - Mac, Linux, Windows&quot; data-og-description=&quot;Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. Download Visual Studio Code to experience a redefined code editor, optimized for building and debugging modern web and cloud applications.&quot; data-og-host=&quot;code.visualstudio.com&quot; data-og-source-url=&quot;https://code.visualstudio.com/Download&quot; data-og-url=&quot;https://code.visualstudio.com/Download&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/jNyUL/hyVJUoUeTl/nUATW1MNHRWJxKDg3SQQaK/img.png?width=1012&amp;amp;height=506&amp;amp;face=0_0_1012_506&quot;&gt;&lt;a href=&quot;https://code.visualstudio.com/Download&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://code.visualstudio.com/Download&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/jNyUL/hyVJUoUeTl/nUATW1MNHRWJxKDg3SQQaK/img.png?width=1012&amp;amp;height=506&amp;amp;face=0_0_1012_506');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Download Visual Studio Code - Mac, Linux, Windows&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. Download Visual Studio Code to experience a redefined code editor, optimized for building and debugging modern web and cloud applications.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;code.visualstudio.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;첫 번째 파일 만들기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드를 작성하기 위해서는 일단 파일을 만들어야 합니다. 먼저 바탕화면에 part1 폴더를 만들고 그안에 3개의 파일을 만들어줍니다. 우리는 매번 똑같이 아래와 같은 파일을 만들거예요.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;index.html&lt;/li&gt;
&lt;li&gt;sciprt.js&lt;/li&gt;
&lt;li&gt;style.css&lt;/li&gt;
&lt;li&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;547&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dAl20v/btsGlficfcX/1ThP3hVJZltrJ2Wujw4gYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dAl20v/btsGlficfcX/1ThP3hVJZltrJ2Wujw4gYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dAl20v/btsGlficfcX/1ThP3hVJZltrJ2Wujw4gYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdAl20v%2FbtsGlficfcX%2F1ThP3hVJZltrJ2Wujw4gYK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;580&quot; height=&quot;547&quot; data-origin-width=&quot;580&quot; data-origin-height=&quot;547&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 이름에서도 알 수 있지만 html 파일은 HTML을 작성하기 위해 만든 것이고, js 파일은 JavaScript, css파일은 CSS를 작성하기 위해 만들었습니다. 이 파일들을 한 폴더 안에 넣어주세요.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;첫 번째 코드 작성하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;index.html 파일에 아래와 같은 HTML 코드를 입력해봅니다.&lt;/p&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;h1&amp;gt;Hello, world!&amp;lt;/h1&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리가 작성한 결과를 보기위해서는 두 가지 방법이 있습니다. 먼저 탐색기(맥: Finder)를 열어 우리가 작성한 index.html 파일을 더블클릭하여 브라우저(&lt;a href=&quot;https://www.google.com/chrome/&quot;&gt;구글 크롬 브라우저&lt;/a&gt; 권장)로 열어줍니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;VSCode 확장 프로그램 설치&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;VSCode의 확장 프로그램을 설치하여 더 쉽게 미리보기를 할 수 있습니다. 왼쪽의 [확장] 메뉴에서 Live Preview를 검색하고 [설치] 버튼을 눌러줍니다. 설치가 완료되면 index.html 탭으로 전환하여 오른쪽 상단의 [미리보기 표시] 아이콘(돋보기 모양)을 눌러줍니다. 이 확장 프로그램을 설치하면 실시간으로 미리보기하며 개발할 수 있어요!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;520&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b55j53/btsGkUyzn2m/jWVGNqMU1REaf5AATlzScK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b55j53/btsGkUyzn2m/jWVGNqMU1REaf5AATlzScK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b55j53/btsGkUyzn2m/jWVGNqMU1REaf5AATlzScK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb55j53%2FbtsGkUyzn2m%2FjWVGNqMU1REaf5AATlzScK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;670&quot; height=&quot;520&quot; data-origin-width=&quot;670&quot; data-origin-height=&quot;520&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1-5. 복사+붙여넣기로 첫 번째 웹 사이트 만들기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  앞으로의 강의를 위해 &lt;a href=&quot;https://www.google.com/chrome/&quot;&gt;구글 크롬 브라우저&lt;/a&gt;를 설치해주세요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리는 이미 만들어진 웹사이트에 들어가서 웹사이트를 복사 붙여넣기해서 첫 번째 웹페이지를 만들어 볼겁니다. 제가 미리 만들어놓은 아래 사이트로 들어가주세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;http://fc-examples-blog.s3-website.ap-northeast-2.amazonaws.com&quot;&gt;http://fc-examples-blog.s3-website.ap-northeast-2.amazonaws.com&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712193436599&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Blog Template &amp;middot; Bootstrap v5.2&quot; data-og-description=&quot;Sample blog post January 1, 2021 by Mark This blog post shows a few different types of content that&amp;rsquo;s supported and styled with Bootstrap. Basic typography, lists, tables, images, code, and more are all supported as expected. This is some additional para&quot; data-og-host=&quot;fc-examples-blog.s3-website.ap-northeast-2.amazonaws.com&quot; data-og-source-url=&quot;http://fc-examples-blog.s3-website.ap-northeast-2.amazonaws.com&quot; data-og-url=&quot;http://fc-examples-blog.s3-website.ap-northeast-2.amazonaws.com&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;http://fc-examples-blog.s3-website.ap-northeast-2.amazonaws.com&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://fc-examples-blog.s3-website.ap-northeast-2.amazonaws.com&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Blog Template &amp;middot; Bootstrap v5.2&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Sample blog post January 1, 2021 by Mark This blog post shows a few different types of content that&amp;rsquo;s supported and styled with Bootstrap. Basic typography, lists, tables, images, code, and more are all supported as expected. This is some additional para&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;fc-examples-blog.s3-website.ap-northeast-2.amazonaws.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;소스코드 보기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹 개발자들이 가장 많이 사용하는 기능 중에 소스코드를 확인하는 기능이 있습니다. 크롬 브라우저 상단 메뉴에서 [보기] - [개발자 정보] - [소스 보기] 메뉴를 클릭하여 소스코드를 확인할 수 있어요. (또는 페이지에서 마우스 오른쪽 클릭 [페이지 소스 보기] 메뉴를 선택하여 소스코드를 볼 수 있습니다)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;759&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZqrN6/btsGmORsZg2/2YmbjSoZnncA83Lc4tcS80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZqrN6/btsGmORsZg2/2YmbjSoZnncA83Lc4tcS80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZqrN6/btsGmORsZg2/2YmbjSoZnncA83Lc4tcS80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZqrN6%2FbtsGmORsZg2%2F2YmbjSoZnncA83Lc4tcS80%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;759&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;759&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1116&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dieanS/btsGmBx0GmM/humdjaSQZiJI4W8SxcVoW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dieanS/btsGmBx0GmM/humdjaSQZiJI4W8SxcVoW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dieanS/btsGmBx0GmM/humdjaSQZiJI4W8SxcVoW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdieanS%2FbtsGmBx0GmM%2FhumdjaSQZiJI4W8SxcVoW0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1116&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1116&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 소스코드를 전체선택하고 복사(Ctrl + C) 후 index.html에 붙여넣기(Ctrl + V)하면 끝! 이제 다시 Live Preview를 통해 미리보기 해볼까요? (또는 탐색기에서 index.html 파일을 더블클릭하여 열어주세요)&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1-6. 첫 번째 웹 사이트 구조 이해하기&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1140&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/V8fpr/btsGldEFyuf/IswCTsMdiDc5BKbA3ErAfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/V8fpr/btsGldEFyuf/IswCTsMdiDc5BKbA3ErAfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/V8fpr/btsGldEFyuf/IswCTsMdiDc5BKbA3ErAfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FV8fpr%2FbtsGldEFyuf%2FIswCTsMdiDc5BKbA3ErAfk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1140&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1140&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출처: &lt;a href=&quot;https://vertex-academy.com/tutorials/en/create-first-web-page/&quot;&gt;https://vertex-academy.com/tutorials/en/create-first-web-page/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712193505729&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;How Do You Create Your First Web Page? &amp;bull; Vertex Academy&quot; data-og-description=&quot;В этой статье вы познакомитесь с простыми HTML-тегами и создадите свою первую веб-страницу. Мы уверены, что у вас обязательно получится!&quot; data-og-host=&quot;vertex-academy.com&quot; data-og-source-url=&quot;https://vertex-academy.com/tutorials/en/create-first-web-page/&quot; data-og-url=&quot;https://vertex-academy.com/tutorials/en/create-first-web-page/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/capBDw/hyVJUh8OXE/Rplx2OoMK1bpfPIFLUNuzk/img.png?width=1100&amp;amp;height=330&amp;amp;face=0_0_1100_330,https://scrap.kakaocdn.net/dn/bU9ziY/hyVJQ06F9g/MjgYiShCYbmgaJ3DKhbUYK/img.png?width=50&amp;amp;height=50&amp;amp;face=0_0_50_50,https://scrap.kakaocdn.net/dn/bbMqvl/hyVJReEfP5/PlVut1aSk51vuAwzFyrNc0/img.png?width=1100&amp;amp;height=330&amp;amp;face=0_0_1100_330&quot;&gt;&lt;a href=&quot;https://vertex-academy.com/tutorials/en/create-first-web-page/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://vertex-academy.com/tutorials/en/create-first-web-page/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/capBDw/hyVJUh8OXE/Rplx2OoMK1bpfPIFLUNuzk/img.png?width=1100&amp;amp;height=330&amp;amp;face=0_0_1100_330,https://scrap.kakaocdn.net/dn/bU9ziY/hyVJQ06F9g/MjgYiShCYbmgaJ3DKhbUYK/img.png?width=50&amp;amp;height=50&amp;amp;face=0_0_50_50,https://scrap.kakaocdn.net/dn/bbMqvl/hyVJReEfP5/PlVut1aSk51vuAwzFyrNc0/img.png?width=1100&amp;amp;height=330&amp;amp;face=0_0_1100_330');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;How Do You Create Your First Web Page? &amp;bull; Vertex Academy&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;В этой статье вы познакомитесь с простыми HTML-тегами и создадите свою первую веб-страницу. Мы уверены, что у вас обязательно получится!&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;vertex-academy.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;설정을 담당하는 head&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;head는 페이지의 설정을 담당합니다. 제목, 링크, 스타일 등이 들어있지요. 제목을 한 번 바꿔볼까요?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;태그 역할&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;title&lt;/td&gt;
&lt;td&gt;페이지 제목&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;link&lt;/td&gt;
&lt;td&gt;CSS 파일 또는 글씨체 경로 지정&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;style&lt;/td&gt;
&lt;td&gt;CSS 작성&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;내용이 들어있는 body&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실제 내용은 body(몸통)에 들어있습니다. 이것저것 바꿔보면서 한 번 미리보기해봐요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  HTML에서 띄어쓰기와 줄바꿈은 페이지에 아무런 영향도 주지 않습니다. 단순히 보기 편하기 위해서 들여쓰기, 줄바꿈을 해요. 들여쓰기를 하기 위해서는 키보드의 Tab을 누릅니다. 줄바꿈을 하는 HTML 태그는 &amp;lt;br/&amp;gt; 입니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1-7. 나만의 웹 서비스 개발을 위한 기획 단계&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;사람들이 많이 검색하는 것(필요로하는 것)이 무엇인가&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사람들이 많이 검색하고 우리 서비스에 들어와야 우리가 돈을 많이 벌 수 있겠죠? 따라서 먼저 우리가 해야할 것은 사람들이 가장 많이 검색하는 단어를 알아보는 것입니다. 우리는 구글 트렌드에서 인기 검색어를 미리보기 할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;구글 트렌드: &lt;a href=&quot;https://trends.google.com/trends/&quot;&gt;https://trends.google.com/trends/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1712193533060&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Google 트렌드&quot; data-og-description=&quot;2023년 올해의 검색어 Google 트렌드 데이터를 통해 한 해를 살펴보세요.&quot; data-og-host=&quot;trends.google.com&quot; data-og-source-url=&quot;https://trends.google.com/trends/&quot; data-og-url=&quot;https://trends.google.com/trends/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b48AOW/hyVJXFVY3k/MKANW6FT4T5U1Wc58T5PD1/img.png?width=1900&amp;amp;height=906&amp;amp;face=0_0_1900_906,https://scrap.kakaocdn.net/dn/jY51g/hyVJ2ga8ag/d4BDZoLQj5NMuUiSehAHak/img.png?width=1900&amp;amp;height=901&amp;amp;face=0_0_1900_901,https://scrap.kakaocdn.net/dn/eKhza/hyVJ5Yf0Rc/fExKovPPWOBtDp1WtlcME0/img.jpg?width=1900&amp;amp;height=792&amp;amp;face=0_0_1900_792&quot;&gt;&lt;a href=&quot;https://trends.google.com/trends/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://trends.google.com/trends/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b48AOW/hyVJXFVY3k/MKANW6FT4T5U1Wc58T5PD1/img.png?width=1900&amp;amp;height=906&amp;amp;face=0_0_1900_906,https://scrap.kakaocdn.net/dn/jY51g/hyVJ2ga8ag/d4BDZoLQj5NMuUiSehAHak/img.png?width=1900&amp;amp;height=901&amp;amp;face=0_0_1900_901,https://scrap.kakaocdn.net/dn/eKhza/hyVJ5Yf0Rc/fExKovPPWOBtDp1WtlcME0/img.jpg?width=1900&amp;amp;height=792&amp;amp;face=0_0_1900_792');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Google 트렌드&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;2023년 올해의 검색어 Google 트렌드 데이터를 통해 한 해를 살펴보세요.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;trends.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;707&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJ5H4g/btsGmW2ZDiY/ixmf6H6yqj1GZ6uW8SxVYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJ5H4g/btsGmW2ZDiY/ixmf6H6yqj1GZ6uW8SxVYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJ5H4g/btsGmW2ZDiY/ixmf6H6yqj1GZ6uW8SxVYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJ5H4g%2FbtsGmW2ZDiY%2Fixmf6H6yqj1GZ6uW8SxVYK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;707&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;707&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 일자별로 검색어를 여러개 비교할수도 있죠.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;684&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xH651/btsGlX9ofZM/5VtfJwliDjOyAItKMLTMoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xH651/btsGlX9ofZM/5VtfJwliDjOyAItKMLTMoK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xH651/btsGlX9ofZM/5VtfJwliDjOyAItKMLTMoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxH651%2FbtsGlX9ofZM%2F5VtfJwliDjOyAItKMLTMoK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;684&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;684&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;685&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5l2do/btsGj4BD72M/SvQcswRVlZGzQoi9SdFuqK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5l2do/btsGj4BD72M/SvQcswRVlZGzQoi9SdFuqK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5l2do/btsGj4BD72M/SvQcswRVlZGzQoi9SdFuqK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5l2do%2FbtsGj4BD72M%2FSvQcswRVlZGzQoi9SdFuqK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;685&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;685&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;이미 만들어진 서비스 찾아보기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리가 계산기를 만들기로 결정했다고 합시다. 이제 어떤 계산기들이 있는지 살펴보는 시간이죠. 구글 또는 네이버에 &amp;ldquo;계산기&amp;rdquo;라고 검색하여 다른 서비스들을 벤치마크 합니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;어떤 기능을 추가할 것인가 기획하기 (우리만의 강점 부각하기)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 사람과 완전히 똑같은 서비스를 만들면 경쟁력이 없겠죠? 똑같은 계산기를 만들더라도 디자인이 더 이쁘다면 사람들이 더 좋아할 것입니다. 또는 똑같은 메모장이라도 저장기능이 있어서 다음에 방문했을 때 전에 써놓은 것이 다시 보인다면 더 좋겠죠. 똑같은 타이머라도 이전에 설정한 시간이 저장되어 있다면 좋겠죠.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;검색 엔진 최적화하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서비스를 만들어서 배포했다면 검색이 잘되도록 최적화하는 작업이 있다면 사람들이 검색했을 때 우리가 만든 서비스를 더 많이 찾을 수 있을거에요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 온라인 메모장의 월간 페이지 방문수는 55만 곱하기 1.47 = 808,500회 입니다. 이 숫자를 구글 애드센스 웹사이트에 들어가 예상 수익을 계산해봅시다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연간 10만 달러(한화 약 1억 4,200만원)를 벌 수 있습니다. 페이지 방문자, 페이지 조회수, 광고 수익 모두 예상 수치이니 보수적으로 잡아 1년에 약 1억원 정도 벌 수 있다고 생각하면 되겠네요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>digital520</author>
      <guid isPermaLink="true">https://digital520.tistory.com/51</guid>
      <comments>https://digital520.tistory.com/51#entry51comment</comments>
      <pubDate>Thu, 4 Apr 2024 10:21:23 +0900</pubDate>
    </item>
    <item>
      <title>1강.웹 프론트엔드를 위한 자바스크립트 첫 걸음</title>
      <link>https://digital520.tistory.com/50</link>
      <description>&lt;h3 style=&quot;background-color: #ffffff; color: #23272f; text-align: start;&quot; data-id=&quot;f38f409dc16843f5a8862af2e0366115&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;&lt;span&gt;강의 소개&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;833&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RlmxH/btsFV6FMXDS/JlmLMLSHb8nNRgMkyBpGi1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RlmxH/btsFV6FMXDS/JlmLMLSHb8nNRgMkyBpGi1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RlmxH/btsFV6FMXDS/JlmLMLSHb8nNRgMkyBpGi1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRlmxH%2FbtsFV6FMXDS%2FJlmLMLSHb8nNRgMkyBpGi1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;833&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;833&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #23272f; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #23272f; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;hr class=&quot;notion-hr notion-block-a99817da439b4948b85b2d4c5e24679c&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #23272f; text-align: start;&quot; data-id=&quot;f3c630fc36344b33936f7d1131549b0b&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;b&gt;웹 프론트엔드를 위한 자바스크립트 첫 걸음 강의&lt;/b&gt;&lt;b&gt;는&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;div style=&quot;background-color: #ffffff; color: #23272f; text-align: start;&quot;&gt;✅ 자바스크립트의 꼭 필요한 개념들을 빠짐없이, 친절하게 설명합니다.&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #23272f; text-align: start;&quot;&gt;✅ 다양한 시각 자료를 통해 심화 개념들을 쉽게 이해할 수 있습니다.&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #23272f; text-align: start;&quot;&gt;✅ 색다른 프로젝트를 통해 배운 내용을 복습합니다.&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #23272f; text-align: start;&quot;&gt;✅ 다양한 기술들을 습득할 수 있는 프론트엔드 개발자로 성장할 수 있습니다.&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #23272f; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #23272f; text-align: start;&quot; data-id=&quot;82511e3ab79d477fa7f9d1754c6182c5&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;b&gt;강의를 마친 다음에는 이런 모습이 될 수 있어요.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;div style=&quot;background-color: #ffffff; color: #23272f; text-align: start;&quot;&gt; &amp;nbsp;&lt;b&gt;웹 프론트엔드 개발자&lt;/b&gt;로 성장할 수 있습니다.&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #23272f; text-align: start;&quot;&gt; &amp;nbsp;&lt;b&gt;자바스크립트 기본 개념&lt;/b&gt;에 대해 완벽히 이해하고, 쓸 수 있습니다.&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #23272f; text-align: start;&quot;&gt;  최종 프로젝트에서 더 나아가&amp;nbsp;&lt;b&gt;다른 기능의 웹 페이지도 스스로 개발&lt;/b&gt;할 수 있습니다.&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #23272f; text-align: start;&quot;&gt;  자바스크립트 심화 개념들을&amp;nbsp;&lt;b&gt;스스로 학습&lt;/b&gt;해 볼 수 있습니다.&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #23272f; text-align: start;&quot;&gt;  자바스크립트 기반의&amp;nbsp;&lt;b&gt;다양한 라이브러리와 프레임워크를 학습&lt;/b&gt;할 수 있습니다.&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #23272f; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #23272f; text-align: start;&quot;&gt;&lt;b&gt;강의 자료&lt;/b&gt;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://one-step-js.hyobb.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://one-step-js.hyobb.com/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1710907555965&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;웹 프론트엔드를 위한 자바스크립트 첫 걸음 - 웹 프론트엔드를 위한 자바스크립트 첫 걸음&quot; data-og-description=&quot;웹 프론트엔드를 위한 자바스크립트 첫 걸음 강의 자료&quot; data-og-host=&quot;one-step-js.hyobb.com&quot; data-og-source-url=&quot;https://one-step-js.hyobb.com/&quot; data-og-url=&quot;https://one-step-js.hyobb.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/chX8YS/hyVAHqJi6u/hu519rvG2kx9A6gwuqVgK0/img.png?width=2000&amp;amp;height=1302&amp;amp;face=0_0_2000_1302&quot;&gt;&lt;a href=&quot;https://one-step-js.hyobb.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://one-step-js.hyobb.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/chX8YS/hyVAHqJi6u/hu519rvG2kx9A6gwuqVgK0/img.png?width=2000&amp;amp;height=1302&amp;amp;face=0_0_2000_1302');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;웹 프론트엔드를 위한 자바스크립트 첫 걸음 - 웹 프론트엔드를 위한 자바스크립트 첫 걸음&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;웹 프론트엔드를 위한 자바스크립트 첫 걸음 강의 자료&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;one-step-js.hyobb.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;강의 사이트_ 인프런&lt;/b&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1710907733951&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;웹 프론트엔드를 위한 자바스크립트 첫 걸음 강의 - 인프런&quot; data-og-description=&quot;웹 프론트엔드 개발자를 희망한다면? 친절하고 꼼꼼한 자바스크립트 강의로 첫걸음을 내딛어보세요✨, 쉽고 자세하게 배우는 자바스크립트 나만의 크롬 개발화면까지 뚝딱! 학생 50% 할인 쿠&quot; data-og-host=&quot;www.inflearn.com&quot; data-og-source-url=&quot;https://www.inflearn.com/course/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%B2%AB%EA%B1%B8%EC%9D%8C?inst=88b248e5&amp;amp;utm_source=instructor&amp;amp;utm_medium=referral&amp;amp;utm_campaign=inflearn_%ED%8A%B8%EB%9E%98%ED%94%BD_promotion-link&quot; data-og-url=&quot;https://www.inflearn.com/course/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%B2%AB%EA%B1%B8%EC%9D%8C?inst=88b248e5&amp;amp;utm_campaign=inflearn_%ED%8A%B8%EB%9E%98%ED%94%BD_promotion-link&amp;amp;utm_medium=referral&amp;amp;utm_source=instructor&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ewTZoG/hyVDtRTT5d/a1myNrmCYJyzGTfkICacIK/img.png?width=1200&amp;amp;height=781&amp;amp;face=0_0_1200_781,https://scrap.kakaocdn.net/dn/b1tbUy/hyVDFdI8cx/KAt210v7tHwc9uRz40RCC1/img.png?width=1200&amp;amp;height=781&amp;amp;face=0_0_1200_781,https://scrap.kakaocdn.net/dn/b17rEL/hyVADu4190/We7f9XwlmYUVGUGKHIAqA1/img.png?width=1690&amp;amp;height=953&amp;amp;face=0_0_1690_953&quot;&gt;&lt;a href=&quot;https://www.inflearn.com/course/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%B2%AB%EA%B1%B8%EC%9D%8C?inst=88b248e5&amp;amp;utm_source=instructor&amp;amp;utm_medium=referral&amp;amp;utm_campaign=inflearn_%ED%8A%B8%EB%9E%98%ED%94%BD_promotion-link&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.inflearn.com/course/%ED%94%84%EB%A1%A0%ED%8A%B8%EC%97%94%EB%93%9C-%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%B2%AB%EA%B1%B8%EC%9D%8C?inst=88b248e5&amp;amp;utm_source=instructor&amp;amp;utm_medium=referral&amp;amp;utm_campaign=inflearn_%ED%8A%B8%EB%9E%98%ED%94%BD_promotion-link&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ewTZoG/hyVDtRTT5d/a1myNrmCYJyzGTfkICacIK/img.png?width=1200&amp;amp;height=781&amp;amp;face=0_0_1200_781,https://scrap.kakaocdn.net/dn/b1tbUy/hyVDFdI8cx/KAt210v7tHwc9uRz40RCC1/img.png?width=1200&amp;amp;height=781&amp;amp;face=0_0_1200_781,https://scrap.kakaocdn.net/dn/b17rEL/hyVADu4190/We7f9XwlmYUVGUGKHIAqA1/img.png?width=1690&amp;amp;height=953&amp;amp;face=0_0_1690_953');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;웹 프론트엔드를 위한 자바스크립트 첫 걸음 강의 - 인프런&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;웹 프론트엔드 개발자를 희망한다면? 친절하고 꼼꼼한 자바스크립트 강의로 첫걸음을 내딛어보세요✨, 쉽고 자세하게 배우는 자바스크립트 나만의 크롬 개발화면까지 뚝딱! 학생 50% 할인 쿠&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.inflearn.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>digital520</author>
      <guid isPermaLink="true">https://digital520.tistory.com/50</guid>
      <comments>https://digital520.tistory.com/50#entry50comment</comments>
      <pubDate>Wed, 20 Mar 2024 13:09:17 +0900</pubDate>
    </item>
    <item>
      <title>제43차_사업개발캠프 블로그( IT 프로젝트 관리 방법론_3일차)</title>
      <link>https://digital520.tistory.com/48</link>
      <description>&lt;h1&gt;투자 유치 준비하기&lt;/h1&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사업 성장 계획을 타인에게 공유할 수 있도록 구조화 할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.notion.so/530cbeb6403c4b5f93a82c3f667f37dc?pvs=4#14c65f753ad24954bb13407dd0d92200&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.notion.so/530cbeb6403c4b5f93a82c3f667f37dc?pvs=4#14c65f753ad24954bb13407dd0d92200&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1710503399416&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;투자 유치 준비하기 | Notion&quot; data-og-description=&quot;실시간 강의에서 실습해 본 학습 내용을 토대로 투자 유치를 준비해 봅니다.&quot; data-og-host=&quot;legend-palm-1f1.notion.site&quot; data-og-source-url=&quot;https://www.notion.so/530cbeb6403c4b5f93a82c3f667f37dc?pvs=4#14c65f753ad24954bb13407dd0d92200&quot; data-og-url=&quot;https://legend-palm-1f1.notion.site/530cbeb6403c4b5f93a82c3f667f37dc&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/VPlV7/hyVynZ50AV/dfFnyRCj5FcKbF74Irxhh1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/yzyTX/hyVyo5NdQJ/5gZ9PvcHrjG8Y9Pm2QsbS0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.notion.so/530cbeb6403c4b5f93a82c3f667f37dc?pvs=4#14c65f753ad24954bb13407dd0d92200&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.notion.so/530cbeb6403c4b5f93a82c3f667f37dc?pvs=4#14c65f753ad24954bb13407dd0d92200&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/VPlV7/hyVynZ50AV/dfFnyRCj5FcKbF74Irxhh1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/yzyTX/hyVyo5NdQJ/5gZ9PvcHrjG8Y9Pm2QsbS0/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;투자 유치 준비하기 | Notion&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;실시간 강의에서 실습해 본 학습 내용을 토대로 투자 유치를 준비해 봅니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;legend-palm-1f1.notion.site&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  실시간 강의에서 실습해 본 학습 내용을 토대로 투자 유치를 준비해 봅니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;정부 지원 사업 등에서 활발히 사용하는 PSST 사업계획서 양 식을 활용하여(수업 중 파일로 공유 예정) 사업계획서를 작성한다&lt;/li&gt;
&lt;/ul&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;표준사업계획서&amp;nbsp;드라이브&amp;nbsp;링크&amp;nbsp;-&amp;nbsp;&lt;a href=&quot;https://drive.google.com/drive/folders/1AeWCpoW3OVQ1wuHxKdKk9iGYo7Xv3KE_&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://drive.google.com/drive/folders/1AeWCpoW3OVQ1wuHxKdKk9iGYo7Xv3KE_&lt;/a&gt;&lt;br /&gt;(표&amp;nbsp;작성은&amp;nbsp;미뤄도&amp;nbsp;됨)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/bqw94T/btsFQRBMp5P/YSm05NbhYvIws4Hdcg4VK0/%EC%B0%BD%EC%97%85%EC%82%AC%EC%97%85%ED%99%94_%EC%A7%80%EC%9B%90%EC%82%AC%EC%97%85_%ED%91%9C%EC%A4%80%EC%82%AC%EC%97%85%EA%B3%84%ED%9A%8D%EC%84%9C_%EC%96%91%EC%8B%9D%28%EC%9D%BC%EB%B0%98%29.hwp?attach=1&amp;amp;knm=tfile.hwp&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;창업사업화_지원사업_표준사업계획서_양식(일반).hwp&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.11MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;

&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;셀프 채점 기준&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;[ ] 사업 계획서 각 항목을 빠짐없이 작성할 수 있다&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;IT 프로젝트 관리 방법론_3일차 강의&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;1교시&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=luh4sh1Be8A&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.youtube.com/watch?v=luh4sh1Be8A&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=luh4sh1Be8A&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/dfIetB/hyVBLLM08G/7SoBYDxVdWei4KBZH5JS4k/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=1190_260_1240_314&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/luh4sh1Be8A&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2교시_앞쪽 12분 가량이 녹화 안됨&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=RcKmuLjX3n4&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.youtube.com/watch?v=RcKmuLjX3n4&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=RcKmuLjX3n4&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/cfLSzD/hyVyhFyBtG/uRbQo71vvChU5KoQj18t3k/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=1190_258_1236_308&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/RcKmuLjX3n4&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3교시&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=uHjWVLals7w&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.youtube.com/watch?v=uHjWVLals7w&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=uHjWVLals7w&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/cLvxPI/hyVyeWobTS/RNXbq8nxsYtTD7n0h1K0w1/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=1188_272_1234_322&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/uHjWVLals7w&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4교시&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=qhpfA4vviGs&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.youtube.com/watch?v=qhpfA4vviGs&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=qhpfA4vviGs&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/czV4WP/hyVypXVbWH/CCRUxjT6gU3kqSWVwmqHW0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=372_264_1226_532&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/qhpfA4vviGs&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 안내 영상&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=tRt_T4z7SoE&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.youtube.com/watch?v=tRt_T4z7SoE&lt;/a&gt;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=tRt_T4z7SoE&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/ulsQw/hyVyiR2rMU/bpEHliILfTbfhpzYYJTHWk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=1112_278_1162_332&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/tRt_T4z7SoE&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.notion.so/3-15-42e959b8d5a4453395a7eb76cbebe755?pvs=4&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.notion.so/3-15-42e959b8d5a4453395a7eb76cbebe755?pvs=4&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1710503718740&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;프로젝트 분반 및 팀 배정(3월 15일) | Notion&quot; data-og-description=&quot;프로젝트 왜 해야할까?&quot; data-og-host=&quot;legend-palm-1f1.notion.site&quot; data-og-source-url=&quot;https://www.notion.so/3-15-42e959b8d5a4453395a7eb76cbebe755?pvs=4&quot; data-og-url=&quot;https://legend-palm-1f1.notion.site/42e959b8d5a4453395a7eb76cbebe755&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/lvhz3/hyVyb6rszv/RsKhlRDeyKgkBYNE27J3U1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/czyVXK/hyVBIasMRv/kqpKXQmWYUTjSlLffbMtu1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.notion.so/3-15-42e959b8d5a4453395a7eb76cbebe755?pvs=4&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.notion.so/3-15-42e959b8d5a4453395a7eb76cbebe755?pvs=4&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/lvhz3/hyVyb6rszv/RsKhlRDeyKgkBYNE27J3U1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/czyVXK/hyVBIasMRv/kqpKXQmWYUTjSlLffbMtu1/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;프로젝트 분반 및 팀 배정(3월 15일) | Notion&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;프로젝트 왜 해야할까?&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;legend-palm-1f1.notion.site&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <author>digital520</author>
      <guid isPermaLink="true">https://digital520.tistory.com/48</guid>
      <comments>https://digital520.tistory.com/48#entry48comment</comments>
      <pubDate>Fri, 15 Mar 2024 20:56:43 +0900</pubDate>
    </item>
  </channel>
</rss>