<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>이왕31</title>
    <link>https://leewang31.tistory.com/</link>
    <description>이왕 할 거면 기분 좋게</description>
    <language>ko</language>
    <pubDate>Tue, 14 Jul 2026 19:54:28 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>LeeWang_31</managingEditor>
    <image>
      <title>이왕31</title>
      <url>https://tistory1.daumcdn.net/tistory/5379745/attach/f0fe2c2bddb54e2986f5e3946af9e6a5</url>
      <link>https://leewang31.tistory.com</link>
    </image>
    <item>
      <title>[React] react-icon</title>
      <link>https://leewang31.tistory.com/248</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1152&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b4TbDg/btrT4Ask8U4/uEYqU2dkJAFA5lTw0dRTk0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b4TbDg/btrT4Ask8U4/uEYqU2dkJAFA5lTw0dRTk0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b4TbDg/btrT4Ask8U4/uEYqU2dkJAFA5lTw0dRTk0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb4TbDg%2FbtrT4Ask8U4%2FuEYqU2dkJAFA5lTw0dRTk0%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;600&quot; height=&quot;480&quot; data-origin-width=&quot;1440&quot; data-origin-height=&quot;1152&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;코드스테이즈 41기 교육 내용을 정리하고 있습니다.&lt;br /&gt;틀린 부분이 있으면 댓글로 알려주시면 감사하겠습니다&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://react-icons.github.io/react-icons&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://react-icons.github.io/react-icons&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1671423404081&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;React Icons&quot; data-og-description=&quot;React Icons Include popular icons in your React projects easily with react-icons, which utilizes ES6 imports that allows you to include only the icons that your project is using. Installation (for standard modern project) npm install react-icons --save Usa&quot; data-og-host=&quot;react-icons.github.io&quot; data-og-source-url=&quot;https://react-icons.github.io/react-icons&quot; data-og-url=&quot;https://react-icons.github.io/react-icons/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://react-icons.github.io/react-icons&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://react-icons.github.io/react-icons&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;React Icons&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;React Icons Include popular icons in your React projects easily with react-icons, which utilizes ES6 imports that allows you to include only the icons that your project is using. Installation (for standard modern project) npm install react-icons --save Usa&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;react-icons.github.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;react아이콘은 위에 있는 사이트에 존재하는아이콘을 쉽게 가져와 사용할 수 있는 라이브러리 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;install을 진행하겠습니다&lt;/p&gt;
&lt;pre id=&quot;code_1671423462737&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm install react-icons --save&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;font Awesome에 존재하는 안트로이드 아이콘을 사용하겠습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;769&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWzZ8Y/btrTR8Y9DVq/uj32xvTj2Dr2MFSPlMqgFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWzZ8Y/btrTR8Y9DVq/uj32xvTj2Dr2MFSPlMqgFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWzZ8Y/btrTR8Y9DVq/uj32xvTj2Dr2MFSPlMqgFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWzZ8Y%2FbtrTR8Y9DVq%2Fuj32xvTj2Dr2MFSPlMqgFK%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;932&quot; height=&quot;769&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;769&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;import부분에 적혀있는 코드를 사용합니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;iconName 부분에 사용할 아이콘의 이름을 적어줍니다.&lt;/p&gt;
&lt;pre class=&quot;capnproto&quot;&gt;&lt;code&gt;import { FaAndroid } from &quot;react-icons/fa&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;그리고 styled component를 사용하는것 처럼 사용하면 됩니다.&lt;/p&gt;
&lt;pre class=&quot;apache&quot;&gt;&lt;code&gt;&amp;lt;FaAndroid/&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;366&quot; data-origin-height=&quot;88&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7PblP/btrT3pSi9tT/iZf0ANYtlg0iOtwyDM24k1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7PblP/btrT3pSi9tT/iZf0ANYtlg0iOtwyDM24k1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7PblP/btrT3pSi9tT/iZf0ANYtlg0iOtwyDM24k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7PblP%2FbtrT3pSi9tT%2FiZf0ANYtlg0iOtwyDM24k1%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;366&quot; height=&quot;88&quot; data-origin-width=&quot;366&quot; data-origin-height=&quot;88&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;사이즈와 color도 변경이 가능합니다.&lt;/p&gt;
&lt;pre class=&quot;routeros&quot;&gt;&lt;code&gt;&amp;lt;FaAndroid size=&quot;124&quot; color=&quot;#00ff00&quot;/&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;328&quot; data-origin-height=&quot;155&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QGjVA/btrTT7SY3Es/LxZMIdbnKm0HUuyuJcYe41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QGjVA/btrTT7SY3Es/LxZMIdbnKm0HUuyuJcYe41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QGjVA/btrTT7SY3Es/LxZMIdbnKm0HUuyuJcYe41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQGjVA%2FbtrTT7SY3Es%2FLxZMIdbnKm0HUuyuJcYe41%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;328&quot; height=&quot;155&quot; data-origin-width=&quot;328&quot; data-origin-height=&quot;155&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 class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;h3&amp;gt; Lets go for a &amp;lt;FaAndroid /&amp;gt;? &amp;lt;/h3&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;367&quot; data-origin-height=&quot;93&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dCUZmt/btrTTo8x0sI/THB5NQjnu7pngCVQargKI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dCUZmt/btrTTo8x0sI/THB5NQjnu7pngCVQargKI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dCUZmt/btrTTo8x0sI/THB5NQjnu7pngCVQargKI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdCUZmt%2FbtrTTo8x0sI%2FTHB5NQjnu7pngCVQargKI1%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;367&quot; height=&quot;93&quot; data-origin-width=&quot;367&quot; data-origin-height=&quot;93&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>프론트엔드/Codestates</category>
      <author>LeeWang_31</author>
      <guid isPermaLink="true">https://leewang31.tistory.com/248</guid>
      <comments>https://leewang31.tistory.com/248#entry248comment</comments>
      <pubDate>Mon, 19 Dec 2022 13:25:57 +0900</pubDate>
    </item>
    <item>
      <title>[git] add 오랜 시간 소요</title>
      <link>https://leewang31.tistory.com/247</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/D9fvd/btrTVieyDJ7/nLW6fMn0QszDaV4sDgdwB1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/D9fvd/btrTVieyDJ7/nLW6fMn0QszDaV4sDgdwB1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/D9fvd/btrTVieyDJ7/nLW6fMn0QszDaV4sDgdwB1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FD9fvd%2FbtrTVieyDJ7%2FnLW6fMn0QszDaV4sDgdwB1%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;500&quot; height=&quot;500&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;gitignore은 이거 &amp;darr;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.toptal.com/developers/gitignore&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.toptal.com/developers/gitignore&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1671287468566&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;gitignore.io&quot; data-og-description=&quot;Create useful .gitignore files for your project&quot; data-og-host=&quot;www.toptal.com&quot; data-og-source-url=&quot;https://www.toptal.com/developers/gitignore&quot; data-og-url=&quot;https://www.toptal.com/developers/gitignore&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ijBNg/hyQWAOTruI/SFDK3NbSXIShfue8Hul4hk/img.png?width=2400&amp;amp;height=1254&amp;amp;face=0_0_2400_1254&quot;&gt;&lt;a href=&quot;https://www.toptal.com/developers/gitignore&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.toptal.com/developers/gitignore&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ijBNg/hyQWAOTruI/SFDK3NbSXIShfue8Hul4hk/img.png?width=2400&amp;amp;height=1254&amp;amp;face=0_0_2400_1254');&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;gitignore.io&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Create useful .gitignore files for your project&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.toptal.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;⛔react github올리는 시간 오래걸림&lt;/b&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; 사건&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이상하다 생각했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;npx create-react-app을 하고 git add .를 하면 상당한 시간이 걸렸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;거의 20분 이상 걸렸다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나는 그게 당연한 일인줄 알고 살았는데 스터디원분들은 그렇지 않다는 것을 알게 되었다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt; 해결&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;gitignore의 작성의 유무였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;난 gitignore을 사용하지 않았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 node_modules을 ignore하지 않아서 오랜시간이 걸렸다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이걸 ignore하니까 진짜 5초도 안걸렸다 약간 허무...&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;b&gt; 추가&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;mac에서 window로&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;window에서 mac으로 이동 하는 경우&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.DS_STORE, thumb.db 와 같은 파일 이 생성 될수 있다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런것도 ignore로 설정하면 레포지토리가 더러워지는걸 방지 할 수 있다!!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;346&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/60fQE/btrTRqdQz0p/NkkVBxyxqaX33ZhMlFupU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/60fQE/btrTRqdQz0p/NkkVBxyxqaX33ZhMlFupU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/60fQE/btrTRqdQz0p/NkkVBxyxqaX33ZhMlFupU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F60fQE%2FbtrTRqdQz0p%2FNkkVBxyxqaX33ZhMlFupU1%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;800&quot; height=&quot;346&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;346&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;❌&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;안전제일&lt;/b&gt;&lt;/span&gt;❌&lt;/p&gt;</description>
      <category>정보/오류노트</category>
      <author>LeeWang_31</author>
      <guid isPermaLink="true">https://leewang31.tistory.com/247</guid>
      <comments>https://leewang31.tistory.com/247#entry247comment</comments>
      <pubDate>Sat, 17 Dec 2022 23:39:50 +0900</pubDate>
    </item>
    <item>
      <title>[Git Hub] Git branch1</title>
      <link>https://leewang31.tistory.com/246</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgB9ZA/btrTSww9WJp/pZrOck4vUslN6IQm0ej2vk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgB9ZA/btrTSww9WJp/pZrOck4vUslN6IQm0ej2vk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgB9ZA/btrTSww9WJp/pZrOck4vUslN6IQm0ej2vk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcgB9ZA%2FbtrTSww9WJp%2FpZrOck4vUslN6IQm0ej2vk%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;500&quot; height=&quot;500&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Git&amp;nbsp;branch&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;브랜칭은 기존 개발중인 메인 개발 코드를 그대로 복사하여 새로운 기능 개발을 메인 개발 코드를 건드리지 않고 할 수 있는 버전 관리 기법입니다. 처음에 Git 리포지토리를 생성하면 나오는 main 브랜치에서만 작업을 하다가 새로운 기능 개발을 위해 feature 브랜치를 새로 생성하는 경우, 기존 main 브랜치에서의 작업은 유지하고 새로운 feature 브랜치에서 자유롭게 코드를 추가 및 삭제할 수 있습니다.&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;b&gt;브랜치&amp;nbsp;생성하기&amp;nbsp;/&amp;nbsp;변경하기&amp;nbsp;(git&amp;nbsp;switch)&lt;/b&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;생성&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1866&quot; data-origin-height=&quot;835&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2RQRG/btrTRp6qlza/8Xmkm7QKcYmpoozAJJ73SK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2RQRG/btrTRp6qlza/8Xmkm7QKcYmpoozAJJ73SK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2RQRG/btrTRp6qlza/8Xmkm7QKcYmpoozAJJ73SK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2RQRG%2FbtrTRp6qlza%2F8Xmkm7QKcYmpoozAJJ73SK%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;1866&quot; height=&quot;835&quot; data-origin-width=&quot;1866&quot; data-origin-height=&quot;835&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Git이 바라보는 곳, HEAD를 변경하는 작업을 switch라고 합니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;브랜치를 생성할때는 create의 의미로 &lt;b&gt;-c&lt;/b&gt;를 붙여줘야합니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;switch 이전의 문법이었던 check로도 가능합니다&lt;/p&gt;
&lt;pre id=&quot;code_1671199104862&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;git switch -c dev
# checkout이라는 명령어도 사용할 수 있습니다.
git checkout -b todo&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;변경&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1866&quot; data-origin-height=&quot;835&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bIAKnn/btrTRGNCjXN/yUoKrmniAbiHTgDqodP7H0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bIAKnn/btrTRGNCjXN/yUoKrmniAbiHTgDqodP7H0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bIAKnn/btrTRGNCjXN/yUoKrmniAbiHTgDqodP7H0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbIAKnn%2FbtrTRGNCjXN%2FyUoKrmniAbiHTgDqodP7H0%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;1866&quot; height=&quot;835&quot; data-origin-width=&quot;1866&quot; data-origin-height=&quot;835&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전에 생성과 동일 하지만 -c를 빼고 이동하는 branch의 이름을 작성합니다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 기존에 있던 main 브랜치로 HEAD를 변경하려면, -c를 붙이지 않습니다.
git switch dev
git checkout dev&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;브랜치&amp;nbsp;합치기&amp;nbsp;(git&amp;nbsp;merge)&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;todo 브랜치에서 두개의 커밋을 보낸후 main으로 이동하여 병합을 할수 있습니다&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 기능 개발이 진행되었습니다.
git commit -m &quot;fix1&quot;
git commit -m &quot;fix2&quot;
# 머지를 위해 main 브랜치로 전환
git switch main
# main 브랜치로 feat/todo 브랜치를 병함
git merge todo&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;2135&quot; data-origin-height=&quot;950&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMY96v/btrTQ1x0Gxx/pLteQNU83v4voi7tT4mFs0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMY96v/btrTQ1x0Gxx/pLteQNU83v4voi7tT4mFs0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMY96v/btrTQ1x0Gxx/pLteQNU83v4voi7tT4mFs0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMY96v%2FbtrTQ1x0Gxx%2FpLteQNU83v4voi7tT4mFs0%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;2135&quot; height=&quot;950&quot; data-origin-width=&quot;2135&quot; data-origin-height=&quot;950&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;# 기능 개발이 진행되었습니다.
git commit -m &quot;fix1&quot;
git commit -m &quot;fix2&quot;
# Github 리포지토리로 푸시합니다.
git push origin todo
# Github에서 Pull Request를 합니다.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;git push &amp;lt;remote&amp;gt; &amp;lt;branch&amp;gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 형식으로 로컬에 저장되어 있는 todo라는 브랜치를 github(원격저장소)로 푸시할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;gitbash에 master와 브랜치인 dev, todo를 생성했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;230&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CYTYy/btrTSM0TUfm/C5qBuKDuVL0KI90aOmFbb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CYTYy/btrTSM0TUfm/C5qBuKDuVL0KI90aOmFbb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CYTYy/btrTSM0TUfm/C5qBuKDuVL0KI90aOmFbb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCYTYy%2FbtrTSM0TUfm%2FC5qBuKDuVL0KI90aOmFbb1%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;745&quot; height=&quot;230&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;230&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;hello하는 txt파일을 HEAD를 todo로 두고 commit을 진행하였습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 git push origin todo로 원격 저장소로 push를 보냈습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;603&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pAbd5/btrTQhORSzN/Yakpx8MhH9p7RssTgRUyek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pAbd5/btrTQhORSzN/Yakpx8MhH9p7RssTgRUyek/img.png&quot; data-alt=&quot;push를 처음에 못찍어서 push를 한번더 했습니다&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pAbd5/btrTQhORSzN/Yakpx8MhH9p7RssTgRUyek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpAbd5%2FbtrTQhORSzN%2FYakpx8MhH9p7RssTgRUyek%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;745&quot; height=&quot;603&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;603&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;push를 처음에 못찍어서 push를 한번더 했습니다&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;github으로 왔습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Pull request&lt;/b&gt;를 누르고 &lt;b&gt;New pull request&lt;/b&gt;를 눌러줍니다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1642&quot; data-origin-height=&quot;454&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dH5dfS/btrTR9B1zEV/LYkhGaazWwCT7hD5SFvGIk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dH5dfS/btrTR9B1zEV/LYkhGaazWwCT7hD5SFvGIk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dH5dfS/btrTR9B1zEV/LYkhGaazWwCT7hD5SFvGIk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdH5dfS%2FbtrTR9B1zEV%2FLYkhGaazWwCT7hD5SFvGIk%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;1642&quot; height=&quot;454&quot; data-origin-width=&quot;1642&quot; data-origin-height=&quot;454&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;623&quot; data-origin-height=&quot;224&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFgfbs/btrTPQc9yIx/uPi4cnOyyxTKWdvAKh4kIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFgfbs/btrTPQc9yIx/uPi4cnOyyxTKWdvAKh4kIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFgfbs/btrTPQc9yIx/uPi4cnOyyxTKWdvAKh4kIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFgfbs%2FbtrTPQc9yIx%2FuPi4cnOyyxTKWdvAKh4kIK%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;600&quot; height=&quot;216&quot; data-origin-width=&quot;623&quot; data-origin-height=&quot;224&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;저는 todo라는 브랜치에서 dev라는 브랜치로 보내고 싶기 때문에 다음과 같이 작성했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;create pull request를 누릅니다&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1556&quot; data-origin-height=&quot;805&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vzpn0/btrTQBTRxG0/48nuy7kIb3egwXhO4iShdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vzpn0/btrTQBTRxG0/48nuy7kIb3egwXhO4iShdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vzpn0/btrTQBTRxG0/48nuy7kIb3egwXhO4iShdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fvzpn0%2FbtrTQBTRxG0%2F48nuy7kIb3egwXhO4iShdK%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;1556&quot; height=&quot;805&quot; data-origin-width=&quot;1556&quot; data-origin-height=&quot;805&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내용을 적당히 채워주고 create pull request를 눌러줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1601&quot; data-origin-height=&quot;784&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Npw13/btrTRCR7GBQ/zYNspLTOp8moYknjpbEDY0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Npw13/btrTRCR7GBQ/zYNspLTOp8moYknjpbEDY0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Npw13/btrTRCR7GBQ/zYNspLTOp8moYknjpbEDY0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNpw13%2FbtrTRCR7GBQ%2FzYNspLTOp8moYknjpbEDY0%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;1601&quot; height=&quot;784&quot; data-origin-width=&quot;1601&quot; data-origin-height=&quot;784&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;우측에서 label과 milestone등등을 정할수 있습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 다른 사용자 혹은 본인이 comment를 달고 싶은 경우 Write로 되어있는 부분에 작성을 할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드를 리뷰하고 해당 코드가 dev에 들어가도 될것 같다 싶은 경우 &lt;b&gt;Merge pull request - confirm merge&lt;/b&gt;를 눌러주면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1586&quot; data-origin-height=&quot;1174&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhkA8E/btrTP3J27PO/iLiYgTTElOk0kQas7CMJ8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhkA8E/btrTP3J27PO/iLiYgTTElOk0kQas7CMJ8k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhkA8E/btrTP3J27PO/iLiYgTTElOk0kQas7CMJ8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhkA8E%2FbtrTP3J27PO%2FiLiYgTTElOk0kQas7CMJ8k%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;1586&quot; height=&quot;1174&quot; data-origin-width=&quot;1586&quot; data-origin-height=&quot;1174&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;1173&quot; data-origin-height=&quot;289&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bK4sJA/btrTRFOLv1Y/OUJDzL20NmCBoUqqnmY68k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bK4sJA/btrTRFOLv1Y/OUJDzL20NmCBoUqqnmY68k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bK4sJA/btrTRFOLv1Y/OUJDzL20NmCBoUqqnmY68k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbK4sJA%2FbtrTRFOLv1Y%2FOUJDzL20NmCBoUqqnmY68k%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;1173&quot; height=&quot;289&quot; data-origin-width=&quot;1173&quot; data-origin-height=&quot;289&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;이전에 사용했던 branch를 지울지 물어봅니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지우길 원하는 경우 &lt;b&gt;Delete branch&lt;/b&gt;를 눌러주면 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1159&quot; data-origin-height=&quot;727&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EkRb0/btrTQ0MC8sm/YjgUVZgLuRoS8EW9QkwcU1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EkRb0/btrTQ0MC8sm/YjgUVZgLuRoS8EW9QkwcU1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EkRb0/btrTQ0MC8sm/YjgUVZgLuRoS8EW9QkwcU1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEkRb0%2FbtrTQ0MC8sm%2FYjgUVZgLuRoS8EW9QkwcU1%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;1159&quot; height=&quot;727&quot; data-origin-width=&quot;1159&quot; data-origin-height=&quot;727&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;브랜치&amp;nbsp;삭제하기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원격저장소에 todo라는 브랜치가 사라졌습니다. 우왕 ㅎㅎ&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1641&quot; data-origin-height=&quot;783&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c7UnFe/btrTQ0Tp4g2/BSPgcNhqtKlqngpviHTZik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c7UnFe/btrTQ0Tp4g2/BSPgcNhqtKlqngpviHTZik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c7UnFe/btrTQ0Tp4g2/BSPgcNhqtKlqngpviHTZik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc7UnFe%2FbtrTQ0Tp4g2%2FBSPgcNhqtKlqngpviHTZik%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;1641&quot; height=&quot;783&quot; data-origin-width=&quot;1641&quot; data-origin-height=&quot;783&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 local환경에서는 여전히 todo 브랜치가 남아있습니다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;git branch -d todo
git branch -D todo&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로컬 리포지토리에서 브랜치 삭제는 git branch -d &amp;lt;브랜치명&amp;gt; 으로 할 수 있습니다. Git은 원활한 버전 관리를 위해서, 브랜치가 합쳐지지 않으면 삭제하지 못하도록 설정이 되어있습니다. 하지만 종종 다 만들지 못한 기능의 기록을 삭제하고 싶을 수 있습니다. 이 때 -D 옵션을 쓰면 삭제할 수 있습니다. 삭제가 되어도 상관이 없는데 삭제가 안된다 싶으면 대문자D로 삭제하면 된다! 하지만 왜 오류가 생겼는지 확인하는게 좋을것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오류 코드는 캡쳐하지 못했지만 HEAD어쩌구 하는 오류가 발생했었는데 이는 원격저장소에서는 브랜치가 삭제 되지 않았는데 local에서 삭제했기 때문에 나타나는 오류가 있었다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;merge한 브랜치는 삭제하는게 좋다&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발자로 일하시는 분의 말씀을 들어보니, 보통 하나의 역할이 끝난 브랜치는 지워 준다고 한다. 브랜치를 지우지 않고 6개, 8개 이런식으로 두지 않는다고 하셨다. 또한 기능이 정상적으로 끝나 merge된 브랜치가 나중에 다시 사용되면 이전의 log를 갖고 있는 상태로 활성화가 되기 때문에 문제가 생길수 있다 하셨다. (들은걸 제 식대로 정리해서 틀린 부분이 있을수 있습니다)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;원격저장소에 있는 branch가 로컬에서는 보이지 않아요&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원격저장소에 feat이라는 브랜치가 보인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 로컬에서 branch를 검색하면 보이지가 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원격저장소에 feat브랜치가 만들어진 이후 clone했기 때문에 이상하다 생각이 들었다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1207&quot; data-origin-height=&quot;631&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgpyki/btrTSxvZJNq/kIMib9hkS5TVtvZcLUs93K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgpyki/btrTSxvZJNq/kIMib9hkS5TVtvZcLUs93K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgpyki/btrTSxvZJNq/kIMib9hkS5TVtvZcLUs93K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbgpyki%2FbtrTSxvZJNq%2FkIMib9hkS5TVtvZcLUs93K%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;1207&quot; height=&quot;631&quot; data-origin-width=&quot;1207&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그냥 switch로 이동하니 이동이 되었다.&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;745&quot; data-origin-height=&quot;433&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2mNFu/btrTRZsLiA5/M8U1Fd7bA9bZhICvfQLQuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2mNFu/btrTRZsLiA5/M8U1Fd7bA9bZhICvfQLQuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2mNFu/btrTRZsLiA5/M8U1Fd7bA9bZhICvfQLQuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2mNFu%2FbtrTRZsLiA5%2FM8U1Fd7bA9bZhICvfQLQuK%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;600&quot; height=&quot;349&quot; data-origin-width=&quot;745&quot; data-origin-height=&quot;433&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>정보/깃 정보</category>
      <author>LeeWang_31</author>
      <guid isPermaLink="true">https://leewang31.tistory.com/246</guid>
      <comments>https://leewang31.tistory.com/246#entry246comment</comments>
      <pubDate>Sat, 17 Dec 2022 02:04:22 +0900</pubDate>
    </item>
    <item>
      <title>[Git Hub] Github 리포지토리</title>
      <link>https://leewang31.tistory.com/245</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Es08h/btrTSwRfzhi/4K6xUIDptiSTPKXShLlvyk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Es08h/btrTSwRfzhi/4K6xUIDptiSTPKXShLlvyk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Es08h/btrTSwRfzhi/4K6xUIDptiSTPKXShLlvyk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEs08h%2FbtrTSwRfzhi%2F4K6xUIDptiSTPKXShLlvyk%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;500&quot; height=&quot;500&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Github 리포지토리에 꼭 필요한 파일&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;README.md&lt;/b&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;.gitignore&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;github으로 공유하고 싶지 않은 내용을 여기에 적습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.env와 같은 보안문제의 코드나 .idea와 같이 굳이 보낼 필요 없는 파일을 포함합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.toptal.com/developers/gitignore&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.toptal.com/developers/gitignore&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1671187900811&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;gitignore.io&quot; data-og-description=&quot;Create useful .gitignore files for your project&quot; data-og-host=&quot;www.toptal.com&quot; data-og-source-url=&quot;https://www.toptal.com/developers/gitignore&quot; data-og-url=&quot;https://www.toptal.com/developers/gitignore&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/AYhbO/hyQU4JN1WS/PbuWU0lQkeykKpdKwoUWj0/img.png?width=2400&amp;amp;height=1254&amp;amp;face=0_0_2400_1254&quot;&gt;&lt;a href=&quot;https://www.toptal.com/developers/gitignore&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.toptal.com/developers/gitignore&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/AYhbO/hyQU4JN1WS/PbuWU0lQkeykKpdKwoUWj0/img.png?width=2400&amp;amp;height=1254&amp;amp;face=0_0_2400_1254');&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;gitignore.io&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Create useful .gitignore files for your project&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.toptal.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용하는 IDE, 언어 등등에 따라 적절한 ignore을 생성해 줍니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;LICENSE&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #262f40;&quot;&gt;해당 코드의 라이센스를 표기합니다. 깃허브에 public하게 공개된 리포지토리도 라이센스에 따라서 사용을 할 수도 있고, 하지 못 할 수도 있으니 사용할 때 라이센스를 잘 보고 사용해야 합니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #262f40;&quot;&gt;솔로 프로젝트나 작게 팀프로젝트를 진행 하는데 중요한 내용인지 잘 모르겠다.&lt;/span&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;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #262f40;&quot;&gt;프로젝트&amp;nbsp;관리에&amp;nbsp;활용할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;Github&amp;nbsp;기능&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Issue&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Issue는 말 그대로 프로젝트에 새로운 기능을 제안하거나, 버그를 찾아 제보하는 등 프로젝트의 이슈를 의미합니다.&lt;br /&gt;Pre-Project에서는&amp;nbsp;Issue를&amp;nbsp;하나의&amp;nbsp;칸반&amp;nbsp;티켓처럼&amp;nbsp;사용합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;147&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ez9Zcn/btrTR0yffse/DaZSlYthklIXO8X5N6kCC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ez9Zcn/btrTR0yffse/DaZSlYthklIXO8X5N6kCC0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ez9Zcn/btrTR0yffse/DaZSlYthklIXO8X5N6kCC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fez9Zcn%2FbtrTR0yffse%2FDaZSlYthklIXO8X5N6kCC0%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;800&quot; height=&quot;147&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;147&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;264&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cladI6/btrTQhA77P6/MAv2lLMkp0TX7xKKqt6a9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cladI6/btrTQhA77P6/MAv2lLMkp0TX7xKKqt6a9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cladI6/btrTQhA77P6/MAv2lLMkp0TX7xKKqt6a9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcladI6%2FbtrTQhA77P6%2FMAv2lLMkp0TX7xKKqt6a9K%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;800&quot; height=&quot;265&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;264&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Issues &amp;rarr; New issue로 들어가 새로운 issue를 만들수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;326&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CzYld/btrTQxjxjlp/UyDXr6Ualb5pMhftY1yb91/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CzYld/btrTQxjxjlp/UyDXr6Ualb5pMhftY1yb91/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CzYld/btrTQxjxjlp/UyDXr6Ualb5pMhftY1yb91/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCzYld%2FbtrTQxjxjlp%2FUyDXr6Ualb5pMhftY1yb91%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;800&quot; height=&quot;326&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;326&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이슈의 Title과 body를 정할수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Assigness: 해당 태스크를 맡은 사람을 지정해주시면 됩니다. assign yourself를 누르시면 자신의 태스크로 만들 수 있습니다.&lt;/li&gt;
&lt;li&gt;Labels: 태스크 카드에 라벨링을 할 수 있습니다.&lt;/li&gt;
&lt;li&gt;Projects: Projects를 지정할 수 있습니다.&lt;/li&gt;
&lt;li&gt;Milestone: Milestone을 지정할 수 있습니다.&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;blob&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;337&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UipSV/btrTQBlNQl9/fzk348Z0gscnJe3GEhdXN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UipSV/btrTQBlNQl9/fzk348Z0gscnJe3GEhdXN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UipSV/btrTQBlNQl9/fzk348Z0gscnJe3GEhdXN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUipSV%2FbtrTQBlNQl9%2Ffzk348Z0gscnJe3GEhdXN0%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;800&quot; height=&quot;337&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;337&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같이 title과 body만 지정하고 submit을 진행했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 보면 close issue가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 버튼은 issue와 관련된 내용이 처리가 되었을 경우 눌러주시면 milestone과 함께 효과적으로 사용할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;536&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dcqQq7/btrTRBrXeDx/eNFNYXCI38VjbCTPBP20eK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dcqQq7/btrTRBrXeDx/eNFNYXCI38VjbCTPBP20eK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dcqQq7/btrTRBrXeDx/eNFNYXCI38VjbCTPBP20eK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdcqQq7%2FbtrTRBrXeDx%2FeNFNYXCI38VjbCTPBP20eK%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;800&quot; height=&quot;536&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;536&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용중인 예시 입니다.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Labels&lt;/b&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;138&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0uppC/btrTQQiPuzX/H5Kdk58RvbaOvmXkgyO2S0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0uppC/btrTQQiPuzX/H5Kdk58RvbaOvmXkgyO2S0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0uppC/btrTQQiPuzX/H5Kdk58RvbaOvmXkgyO2S0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0uppC%2FbtrTQQiPuzX%2FH5Kdk58RvbaOvmXkgyO2S0%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;800&quot; height=&quot;139&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;138&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라벨은 이슈 화면에서 들어 갈수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;289&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dYEctR/btrTRd5U4sD/2GNNxijmuOgckUuXh8JuL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dYEctR/btrTRd5U4sD/2GNNxijmuOgckUuXh8JuL0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dYEctR/btrTRd5U4sD/2GNNxijmuOgckUuXh8JuL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdYEctR%2FbtrTRd5U4sD%2F2GNNxijmuOgckUuXh8JuL0%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;800&quot; height=&quot;289&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;289&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;New Label을 눌러 새로 생성 가능합니다.&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;1583&quot; data-origin-height=&quot;276&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HF57C/btrTRHyP2Ve/jFXyHfQSHrtbtIyTB2xyhK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HF57C/btrTRHyP2Ve/jFXyHfQSHrtbtIyTB2xyhK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HF57C/btrTRHyP2Ve/jFXyHfQSHrtbtIyTB2xyhK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHF57C%2FbtrTRHyP2Ve%2FjFXyHfQSHrtbtIyTB2xyhK%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;1583&quot; height=&quot;276&quot; data-origin-width=&quot;1583&quot; data-origin-height=&quot;276&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라벨 이름, 설명 , 색상을 정하고 Create label을 누르면 새로운 라벨을 생성하여 사용할 수 있습니다.&lt;/p&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Milestone&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Milestone은&amp;nbsp;이정표&amp;nbsp;역할을&amp;nbsp;하며,&amp;nbsp;태스크&amp;nbsp;카드(Issue)를&amp;nbsp;그룹화하는&amp;nbsp;데&amp;nbsp;사용합니다.&amp;nbsp;Milestone에&amp;nbsp;연결된&amp;nbsp;태스크&amp;nbsp;카드(Issue)가&amp;nbsp;종료되면&amp;nbsp;Milestone마다&amp;nbsp;진행&amp;nbsp;상황이&amp;nbsp;업데이트되는&amp;nbsp;것을&amp;nbsp;볼&amp;nbsp;수&amp;nbsp;있습니다.&amp;nbsp;이&amp;nbsp;Milestone&amp;nbsp;기능을&amp;nbsp;통해&amp;nbsp;연관된&amp;nbsp;이슈의&amp;nbsp;추적과&amp;nbsp;진행&amp;nbsp;상황을&amp;nbsp;한눈에&amp;nbsp;파악할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;장점이&amp;nbsp;있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1687&quot; data-origin-height=&quot;281&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/djUOxv/btrTRCxCLOd/ZPhD8gJU8P8QXZ3i1ZbYXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/djUOxv/btrTRCxCLOd/ZPhD8gJU8P8QXZ3i1ZbYXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/djUOxv/btrTRCxCLOd/ZPhD8gJU8P8QXZ3i1ZbYXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdjUOxv%2FbtrTRCxCLOd%2FZPhD8gJU8P8QXZ3i1ZbYXk%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;1687&quot; height=&quot;281&quot; data-origin-width=&quot;1687&quot; data-origin-height=&quot;281&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;1597&quot; data-origin-height=&quot;767&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/brrm32/btrTPL3Yvjb/N1CdnufxorokLb9zc19Hrk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/brrm32/btrTPL3Yvjb/N1CdnufxorokLb9zc19Hrk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/brrm32/btrTPL3Yvjb/N1CdnufxorokLb9zc19Hrk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbrrm32%2FbtrTPL3Yvjb%2FN1CdnufxorokLb9zc19Hrk%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;1597&quot; height=&quot;767&quot; data-origin-width=&quot;1597&quot; data-origin-height=&quot;767&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;New milestone으로 생성 가능합니다.&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;1604&quot; data-origin-height=&quot;723&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c4Qzy7/btrTRdSokcu/hrPvbNZ0WkzWaQ8bsd4Pd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c4Qzy7/btrTRdSokcu/hrPvbNZ0WkzWaQ8bsd4Pd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c4Qzy7/btrTRdSokcu/hrPvbNZ0WkzWaQ8bsd4Pd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc4Qzy7%2FbtrTRdSokcu%2FhrPvbNZ0WkzWaQ8bsd4Pd0%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;1604&quot; height=&quot;723&quot; data-origin-width=&quot;1604&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;Title, date, description을 채워주고 create를 누르면 생성이 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생성된 마일스톤에 이슈를 추가 할수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이슈를 생성 혹은 수정할때 마일스톤 부분을 새로만든 마일스톤으로 지정을 해줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마일스톤의 진행 상황은 전체 이슈와 closed된 이슈의 비율로 정해집니다&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;1584&quot; data-origin-height=&quot;573&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dBTYth/btrTPzilquP/Akgms1hu3QqSIkYasSwMf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dBTYth/btrTPzilquP/Akgms1hu3QqSIkYasSwMf0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dBTYth/btrTPzilquP/Akgms1hu3QqSIkYasSwMf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdBTYth%2FbtrTPzilquP%2FAkgms1hu3QqSIkYasSwMf0%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;1584&quot; height=&quot;573&quot; data-origin-width=&quot;1584&quot; data-origin-height=&quot;573&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3개의 이슈를 지정했고, 모든 이슈를 closed했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1555&quot; data-origin-height=&quot;697&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXex5M/btrTP4B5qfE/WcjLXr1zvuUkHCMdL12yh0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXex5M/btrTP4B5qfE/WcjLXr1zvuUkHCMdL12yh0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXex5M/btrTP4B5qfE/WcjLXr1zvuUkHCMdL12yh0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXex5M%2FbtrTP4B5qfE%2FWcjLXr1zvuUkHCMdL12yh0%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;1555&quot; height=&quot;697&quot; data-origin-width=&quot;1555&quot; data-origin-height=&quot;697&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;b&gt;Project&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Project는&amp;nbsp;Github&amp;nbsp;내에서&amp;nbsp;업무&amp;nbsp;관리를&amp;nbsp;해줄&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;돕는&amp;nbsp;새로운&amp;nbsp;기능입니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;간반&amp;nbsp;보드(Kanban&amp;nbsp;board)는&amp;nbsp;개인적인&amp;nbsp;수준에서나&amp;nbsp;조직적인&amp;nbsp;수준에서&amp;nbsp;작업을&amp;nbsp;관리하기&amp;nbsp;위해&amp;nbsp;간반을&amp;nbsp;구현하기&amp;nbsp;위해&amp;nbsp;사용할&amp;nbsp;수&amp;nbsp;있는&amp;nbsp;도구들&amp;nbsp;가운데&amp;nbsp;하나이다. &lt;br /&gt;&lt;br /&gt;작업 항목 표현을 위해 카드들을 사용하고 각 프로세스 단계를 표현하기 위해 컬럼을 사용하여 시각적으로 다양한 단계의 프로세스의 일을 시각적으로 표현한다. 카드는 왼쪽에서 오른쪽으로 움직여 진행상황을 표현하고 작업을 수행하는 팀의 조율을 돕는다. 간반 보드는 제조 공정에서 지식 노동에 사용할 수 있다. -위키백과&lt;/blockquote&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2050&quot; data-origin-height=&quot;562&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bohkJ8/btrTQwZeWPK/DFZquMbx524vQjlDk3KhI0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bohkJ8/btrTQwZeWPK/DFZquMbx524vQjlDk3KhI0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bohkJ8/btrTQwZeWPK/DFZquMbx524vQjlDk3KhI0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbohkJ8%2FbtrTQwZeWPK%2FDFZquMbx524vQjlDk3KhI0%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;2050&quot; height=&quot;562&quot; data-origin-width=&quot;2050&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;Link a project라고 기존에 만들어둔 프로젝트를 사용할 수 있다.&lt;/p&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;New project를 누릅니다!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;830&quot; data-origin-height=&quot;623&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LysbZ/btrTQQb51ZJ/9IHEyyOy99o1b3xr8AS5fK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LysbZ/btrTQQb51ZJ/9IHEyyOy99o1b3xr8AS5fK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LysbZ/btrTQQb51ZJ/9IHEyyOy99o1b3xr8AS5fK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLysbZ%2FbtrTQQb51ZJ%2F9IHEyyOy99o1b3xr8AS5fK%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;600&quot; height=&quot;450&quot; data-origin-width=&quot;830&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;조작이 편한 &lt;b&gt;Table&lt;/b&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;706&quot; data-origin-height=&quot;262&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cGI3oE/btrTSv5RhsV/v24zKFuCZskUodL1mOJk6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cGI3oE/btrTSv5RhsV/v24zKFuCZskUodL1mOJk6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cGI3oE/btrTSv5RhsV/v24zKFuCZskUodL1mOJk6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGI3oE%2FbtrTSv5RhsV%2Fv24zKFuCZskUodL1mOJk6k%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;600&quot; height=&quot;223&quot; data-origin-width=&quot;706&quot; data-origin-height=&quot;262&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Leewang31's untitled부분을 누르면 간편하게 이름을 바꿀수 있습니다.&lt;/li&gt;
&lt;li&gt;View 1옆에 화살표로 project form과 group화를 원하는 방식으로 변경 가능합니다&lt;/li&gt;
&lt;/ul&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;867&quot; data-origin-height=&quot;614&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dPVujt/btrTQz2Exwj/wiQkVG3ITiaXrGBFyCnCi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dPVujt/btrTQz2Exwj/wiQkVG3ITiaXrGBFyCnCi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dPVujt/btrTQz2Exwj/wiQkVG3ITiaXrGBFyCnCi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdPVujt%2FbtrTQz2Exwj%2FwiQkVG3ITiaXrGBFyCnCi0%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;600&quot; height=&quot;425&quot; data-origin-width=&quot;867&quot; data-origin-height=&quot;614&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;원하는 이수를 가져올수 있습니다. 다수를 가져오길 원하는 경우 add muliple item을 누릅니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1525&quot; data-origin-height=&quot;1206&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/basBrR/btrTQRa0IhB/6SoTJ9crUHW5r6ip4YECN1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/basBrR/btrTQRa0IhB/6SoTJ9crUHW5r6ip4YECN1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/basBrR/btrTQRa0IhB/6SoTJ9crUHW5r6ip4YECN1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbasBrR%2FbtrTQRa0IhB%2F6SoTJ9crUHW5r6ip4YECN1%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;1525&quot; height=&quot;1206&quot; data-origin-width=&quot;1525&quot; data-origin-height=&quot;1206&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원하는 친구들을 클릭하고 Add selected items를 누르면 가져와 집니다!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1378&quot; data-origin-height=&quot;435&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Nh3Rn/btrTQPEfK2F/eRziKkzdd0pOev2qsm8vtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Nh3Rn/btrTQPEfK2F/eRziKkzdd0pOev2qsm8vtk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Nh3Rn/btrTQPEfK2F/eRziKkzdd0pOev2qsm8vtk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNh3Rn%2FbtrTQPEfK2F%2FeRziKkzdd0pOev2qsm8vtk%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;1378&quot; height=&quot;435&quot; data-origin-width=&quot;1378&quot; data-origin-height=&quot;435&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Assignees와 Status를 변경할수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;더 구분해서 보고 싶은 경우 View 1옆에 화살표로 그룹화 방식을 바꿀수 있고, 아니면 layout 방식을 Board로 변경하면 더 깔끔한 간반보드 느낌으로 사용할 수 있습니다.&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;2556&quot; data-origin-height=&quot;793&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QZB6e/btrTQQDcK9i/rd9IsnerBJ0n0xUksYDLl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QZB6e/btrTQQDcK9i/rd9IsnerBJ0n0xUksYDLl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QZB6e/btrTQQDcK9i/rd9IsnerBJ0n0xUksYDLl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQZB6e%2FbtrTQQDcK9i%2Frd9IsnerBJ0n0xUksYDLl1%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;2556&quot; height=&quot;793&quot; data-origin-width=&quot;2556&quot; data-origin-height=&quot;793&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 이슈를 클릭해서 세부사항을 변경할수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Pull&amp;nbsp;Request&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이부분은 따로 정리해서 올리겠습니다.&lt;/p&gt;</description>
      <category>정보/깃 정보</category>
      <author>LeeWang_31</author>
      <guid isPermaLink="true">https://leewang31.tistory.com/245</guid>
      <comments>https://leewang31.tistory.com/245#entry245comment</comments>
      <pubDate>Fri, 16 Dec 2022 20:34:12 +0900</pubDate>
    </item>
    <item>
      <title>[Node.js/MongoDB] MongoDB에 데이터 확인하기 (feat . EJS)</title>
      <link>https://leewang31.tistory.com/244</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bozDGK/btrTMdRXA68/RNHe2678XCU8anR94KR030/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bozDGK/btrTMdRXA68/RNHe2678XCU8anR94KR030/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bozDGK/btrTMdRXA68/RNHe2678XCU8anR94KR030/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbozDGK%2FbtrTMdRXA68%2FRNHe2678XCU8anR94KR030%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;600&quot; height=&quot;600&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;코딩애플님의 Node.js, MongoDB로 2시간 만에 빠르게 웹서비스 만들기 강의를 듣고 복습의 목적으로 작성하였습니다&lt;/blockquote&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;데이터 읽기&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;mongoDB&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1486&quot; data-origin-height=&quot;710&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5ksso/btrTK5zKIec/rkegpENK43ktfQJ9CrFprk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5ksso/btrTK5zKIec/rkegpENK43ktfQJ9CrFprk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5ksso/btrTK5zKIec/rkegpENK43ktfQJ9CrFprk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5ksso%2FbtrTK5zKIec%2FrkegpENK43ktfQJ9CrFprk%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;1486&quot; height=&quot;710&quot; data-origin-width=&quot;1486&quot; data-origin-height=&quot;710&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;몽고DB에 데이터가 잘 있습니다!&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;b&gt;ejs&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에 list라는 html을 만들겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 html은 몽고DB에 존재하는 데이터를 화면에 보여주는 역할을 합니다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;&amp;lt;!-- list.html --&amp;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, shrink-to-fit=no&quot;&amp;gt;

    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css&quot;
          integrity=&quot;sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N&quot; crossorigin=&quot;anonymous&quot;&amp;gt;

    &amp;lt;title&amp;gt;Home&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;nav class=&quot;nav nav-pills flex-column flex-sm-row&quot;&amp;gt;
    &amp;lt;a class=&quot;flex-sm-fill text-sm-center nav-link &quot; href=&quot;/&quot;&amp;gt;Home&amp;lt;/a&amp;gt;
    &amp;lt;a class=&quot;flex-sm-fill text-sm-center nav-link active&quot; href=&quot;/list&quot;&amp;gt;TODO&amp;lt;/a&amp;gt;
    &amp;lt;a class=&quot;flex-sm-fill text-sm-center nav-link&quot; href=&quot;/write&quot;&amp;gt;Write&amp;lt;/a&amp;gt;
    &amp;lt;a class=&quot;flex-sm-fill text-sm-center nav-link&quot; href=&quot;#&quot;&amp;gt;etc&amp;lt;/a&amp;gt;
&amp;lt;/nav&amp;gt;
&amp;lt;h4&amp;gt;할 일 제목 : 할일&amp;lt;/h4&amp;gt;
&amp;lt;p&amp;gt;할 일 마감날짜 : 마감일&amp;lt;/p&amp;gt;
&amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js&quot;
        integrity=&quot;sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj&quot;
        crossorigin=&quot;anonymous&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js&quot;
        integrity=&quot;sha384-Fy6S3B9q64WdZWQUiU+q4/2Lc9npb8tCaSX9FK7E8HnRr0Jz8D6OP9dO5Vg3Q9ct&quot;
        crossorigin=&quot;anonymous&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;html은 혼자서 데이터를 가져와 화면에 보여줄 수 없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 ejs를 사용하려 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ejs는 &amp;lt;%라는 기호를 사용해서 html안에서 js의 동작을 가능하게 합니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;script태그가 없어도 가능합니다&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;ejs파일은 views폴더 안에 있어야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;views라는 폴더를 만들고 방금 만든 list.html의 확장자를 list.ejs로 바꾸겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ejs는 html기반이기때문에 오류는 뜨지 않습니다 !!&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;b&gt;sever.js&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 /list로 get요청을 보내면 데이터를 list.ejs에서 볼 수 있게 만들겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;index.js로 이동합니다 ! (서버 역할을 하고 있는 js파일)&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;//index.js
const dotenv = require('dotenv')
const express = require('express')
const app = express()
const port = 3001
const bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({extended: true}));
dotenv.config();
let db;
const MongoClient = require('mongodb').MongoClient;
MongoClient.connect(`mongodb+srv://${process.env.MONGODB_USER_ID}:${process.env.MONGODB_USER_PW}@cluster0.pso4lve.mongodb.net/?retryWrites=true&amp;amp;w=majority`,
    function (err, client) {
        if (err) {
            return console.log(err)
        }
        db = client.db('todoApp');

        app.post('/add', function (req, res) {
            console.log(req.body);
            db.collection('post').insertOne({title: req.body.title, data: req.body.date}, function (err, result) {
                console.log('저장완료');
            });
            res.send('전송완료')
        });
    })

app.get('/', (req, res) =&amp;gt; {
    res.sendFile(__dirname + '/index.html');
})
app.get('/write', (req, res) =&amp;gt; {
    res.sendFile(__dirname + '/write.html');
})
app.listen(port, () =&amp;gt; {
    console.log(`Example app listening on port ${port}`)
});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음코드에서 ejs파일을 정상적으로 읽기위해 코드를 추가하겠습니다.&lt;/p&gt;
&lt;pre class=&quot;gams&quot;&gt;&lt;code&gt;app.set('view engine', 'ejs');&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉽게 뷰엔진이 ejs를 읽도록 하는 코드입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;bash&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;app.get('/list', (req, res) =&amp;gt; {
})&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;/list경로로 오는 get요청을 확인합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;coffeescript&quot;&gt;&lt;code&gt;app.get('/list', (req, res) =&amp;gt; {
    //모든데이터 가져오기 문법
    db.collection('post').find().toArray((err, result) =&amp;gt; {
        console.log(result)
        res.render('list.ejs', {posts: result});
    });
})&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전에 사용한 collection을 사용해 post로 시작하는 mongoDB의 collection을 찾습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이후 나온 데이터(result)를 list.ejs로 보냅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보낼때 해당 데이터를 &lt;b&gt;posts&lt;/b&gt;라는 이름으로 사용할 수 있게 보냅니다&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;list.ejs에서 데이터 확인하기&lt;/b&gt;&lt;/h3&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;/nav&amp;gt;
&amp;lt;h4&amp;gt;할 일 제목 : &amp;lt;%= posts[0].title %&amp;gt;&amp;lt;/h4&amp;gt;
&amp;lt;p&amp;gt;할 일 마감날짜 : &amp;lt;%= posts[0].data %&amp;gt;&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;nav태그가 끝나는 곳에 다음 코드를 추가 했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;%= %&amp;gt;는 ejs문법으로 여기 안에서는 js문법을 사용할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;reder되어 보내진 &lt;b&gt;posts&lt;/b&gt;라는 배열을 받습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 배열에는 다음 데이터가 들어있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1671103448129&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[
  {
    _id: new ObjectId(&quot;639a8872cb0211bbe0f379a8&quot;),
    title: '고양이 밥주기',
    data: '12월25일'
  }
]&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;posts의 0번쩨 인덱스의 title의 value는 '고양이 밥주기'이고, data의 value는 &quot;12월 25일&quot;입니다 (date를 적으려다 실수 했습니다)&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;731&quot; data-origin-height=&quot;292&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7cJPc/btrTHPL1Eb8/68kqqDeqK26BJavK20gUp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7cJPc/btrTHPL1Eb8/68kqqDeqK26BJavK20gUp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7cJPc/btrTHPL1Eb8/68kqqDeqK26BJavK20gUp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7cJPc%2FbtrTHPL1Eb8%2F68kqqDeqK26BJavK20gUp1%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;731&quot; height=&quot;292&quot; data-origin-width=&quot;731&quot; data-origin-height=&quot;292&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;b&gt;데이터의 양이 많은경우 출력&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;write로 들어가 데이터를 더 추가 했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;649&quot; data-origin-height=&quot;963&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cs3nkG/btrTM1cEk22/gYesBk9SnKhHYtjGM0WQyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cs3nkG/btrTM1cEk22/gYesBk9SnKhHYtjGM0WQyK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cs3nkG/btrTM1cEk22/gYesBk9SnKhHYtjGM0WQyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcs3nkG%2FbtrTM1cEk22%2FgYesBk9SnKhHYtjGM0WQyK%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;649&quot; height=&quot;963&quot; data-origin-width=&quot;649&quot; data-origin-height=&quot;963&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ejs로 돌아가겠습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;js가 사용 가능하기 때문에 for문도 사용할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;handlebars&quot;&gt;&lt;code&gt;&amp;lt;/nav&amp;gt;
&amp;lt;% for (let i = 0; i &amp;lt;posts.length; i++) {%&amp;gt;
    &amp;lt;h4&amp;gt;할 일 제목 : &amp;lt;%= posts[i].title %&amp;gt;&amp;lt;/h4&amp;gt;
    &amp;lt;p&amp;gt;할 일 마감날짜 : &amp;lt;%= posts[i].data %&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;%}%&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;% %&amp;gt; 인 경우 한 문장이&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;%= %&amp;gt;인 경우 일부분이 js화 된다.&lt;/p&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;727&quot; data-origin-height=&quot;489&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JoGES/btrTMewzfx9/DZr8l3JpEKGKkRMkcxl98K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JoGES/btrTMewzfx9/DZr8l3JpEKGKkRMkcxl98K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JoGES/btrTMewzfx9/DZr8l3JpEKGKkRMkcxl98K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJoGES%2FbtrTMewzfx9%2FDZr8l3JpEKGKkRMkcxl98K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;727&quot; height=&quot;489&quot; data-origin-width=&quot;727&quot; data-origin-height=&quot;489&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;완벽하다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;✍느낀점&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오랜만에 html을 다뤄 본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 받는것도, ejs를 사용하는것도 다 불편하다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빨리 강의 끝내고 react쓰고 싶다&lt;/p&gt;</description>
      <category>백엔드/node</category>
      <author>LeeWang_31</author>
      <guid isPermaLink="true">https://leewang31.tistory.com/244</guid>
      <comments>https://leewang31.tistory.com/244#entry244comment</comments>
      <pubDate>Thu, 15 Dec 2022 20:30:27 +0900</pubDate>
    </item>
    <item>
      <title>[env] js에서 env파일 undefined /오류 코드 : &amp;quot;MongoServerError: bad auth : Authentication failed.&amp;quot;</title>
      <link>https://leewang31.tistory.com/243</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uDkmF/btrTGQQhicG/y2EkPviacZwPYoeNeNZra0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uDkmF/btrTGQQhicG/y2EkPviacZwPYoeNeNZra0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uDkmF/btrTGQQhicG/y2EkPviacZwPYoeNeNZra0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuDkmF%2FbtrTGQQhicG%2Fy2EkPviacZwPYoeNeNZra0%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;500&quot; height=&quot;500&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;⛔문제&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같이 mongoDB에 파일을 보낼 js파일을 만들었습니다.&lt;/p&gt;
&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;//index.js중 일부
const MongoClient = require('mongodb').MongoClient;
MongoClient.connect(`mongodb+srv://${process.env.MONGODB_USER_ID}:${process.env.MONGODB_USER_PW}@cluster0.pso4lve.mongodb.net/?retryWrites=true&amp;amp;w=majority`,
    function (err, client) {
        if (err) {
            return console.log(err)
        }
        db = client.db('todoApp');

        db.collection('post').insertOne({title: '고양이 밥주기', data: '12월25일'}, function (err, result) {
            console.log('저장완료');
        });

        app.listen(port, () =&amp;gt; {
            console.log(`Example app listening on port ${port}`)
        });
    })&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;같은 경로에 env파일을 만들었습니다&lt;/p&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;MONGODB_USER_ID=leewang
MONGODB_USER_PW=PW&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;343&quot; data-origin-height=&quot;367&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDFHEg/btrTExLqHo5/nDR8KdnnOKWSemDkfrmtQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDFHEg/btrTExLqHo5/nDR8KdnnOKWSemDkfrmtQ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDFHEg/btrTExLqHo5/nDR8KdnnOKWSemDkfrmtQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDFHEg%2FbtrTExLqHo5%2FnDR8KdnnOKWSemDkfrmtQ1%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;343&quot; height=&quot;367&quot; data-origin-width=&quot;343&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;이 상태로 실행을 하니 서버가 열리는게 오류가 발생했습니다.&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;&lt;b&gt;❓오류코드&lt;/b&gt;&lt;/h2&gt;
&lt;pre id=&quot;code_1671072151672&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MongoServerError: bad auth : Authentication failed.
    at Connection.onMessage (D:\Code\codingApple\nodejs\node_modules\mongodb\lib\cmap\connection.js:230:30)
    at MessageStream.&amp;lt;anonymous&amp;gt; (D:\Code\codingApple\nodejs\node_modules\mongodb\lib\cmap\connection.js:61:60)
    at MessageStream.emit (node:events:513:28)
    at processIncomingData (D:\Code\codingApple\nodejs\node_modules\mongodb\lib\cmap\message_stream.js:125:16)
    at MessageStream._write (D:\Code\codingApple\nodejs\node_modules\mongodb\lib\cmap\message_stream.js:33:9)
    at writeOrBuffer (node:internal/streams/writable:391:12)
    at _write (node:internal/streams/writable:332:10)
    at MessageStream.Writable.write (node:internal/streams/writable:336:10)
    at TLSSocket.ondata (node:internal/streams/readable:754:22)
  ok: 0,
  code: 8000,
  codeName: 'AtlasError',
  connectionGeneration: 0,
  [Symbol(errorLabels)]: Set(2) { 'HandshakeError', 'ResetPool' }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;✅해결과정&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;console.log로 env파일의 값이 잘 넘어 오는지 확인했습니다.&lt;/p&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;console.log(process.env.MONGODB_USER_ID)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오류는 여전히 있었고, 출력은 undefined가 나왔습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정상적으로 넘어오지 않는다는것을 알아내고 검색을 했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://spiralmoon.tistory.com/entry/Nodejs-env-%ED%99%98%EA%B2%BD%EB%B3%80%EC%88%98&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://spiralmoon.tistory.com/entry/Nodejs-env-%ED%99%98%EA%B2%BD%EB%B3%80%EC%88%98&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1671072335352&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;[Node.js] .env 환경변수&quot; data-og-description=&quot;▶ 주제 : .env 환경변수 Node.js에서 프로그래밍에 필요한 값들을 서술할 수 있는 .env 환경변수 파일에 대하여 알아보자. ▶ 예시 Node.js에서는 프로젝트 디렉토리에 .env라는 이름의 파일이 존재하&quot; data-og-host=&quot;spiralmoon.tistory.com&quot; data-og-source-url=&quot;https://spiralmoon.tistory.com/entry/Nodejs-env-%ED%99%98%EA%B2%BD%EB%B3%80%EC%88%98&quot; data-og-url=&quot;https://spiralmoon.tistory.com/entry/Nodejs-env-%ED%99%98%EA%B2%BD%EB%B3%80%EC%88%98&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/mydVW/hyQTzYepzZ/3mO72RznTPsia0FiZILk7k/img.png?width=654&amp;amp;height=317&amp;amp;face=0_0_654_317,https://scrap.kakaocdn.net/dn/X07KI/hyQTzqpZc7/6sGfiKUtuFnfVyQZmKgQD1/img.png?width=654&amp;amp;height=317&amp;amp;face=0_0_654_317,https://scrap.kakaocdn.net/dn/cWgPz2/hyQUYWmMWi/kkVoxkI4AgX1MnPAl6vOyk/img.png?width=654&amp;amp;height=317&amp;amp;face=0_0_654_317&quot;&gt;&lt;a href=&quot;https://spiralmoon.tistory.com/entry/Nodejs-env-%ED%99%98%EA%B2%BD%EB%B3%80%EC%88%98&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://spiralmoon.tistory.com/entry/Nodejs-env-%ED%99%98%EA%B2%BD%EB%B3%80%EC%88%98&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/mydVW/hyQTzYepzZ/3mO72RznTPsia0FiZILk7k/img.png?width=654&amp;amp;height=317&amp;amp;face=0_0_654_317,https://scrap.kakaocdn.net/dn/X07KI/hyQTzqpZc7/6sGfiKUtuFnfVyQZmKgQD1/img.png?width=654&amp;amp;height=317&amp;amp;face=0_0_654_317,https://scrap.kakaocdn.net/dn/cWgPz2/hyQUYWmMWi/kkVoxkI4AgX1MnPAl6vOyk/img.png?width=654&amp;amp;height=317&amp;amp;face=0_0_654_317');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[Node.js] .env 환경변수&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;▶ 주제 : .env 환경변수 Node.js에서 프로그래밍에 필요한 값들을 서술할 수 있는 .env 환경변수 파일에 대하여 알아보자. ▶ 예시 Node.js에서는 프로젝트 디렉토리에 .env라는 이름의 파일이 존재하&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;spiralmoon.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 블로그를 통해 dotenv가 있어야 정상적으로 env가 실행 될수 있다는 것을 알아냈고, dotenv를 install하고 정상적으로 가져오기 위한 코드를 작성했습니다.&lt;/p&gt;
&lt;pre class=&quot;ebnf&quot;&gt;&lt;code&gt;const dotenv = require('dotenv')
dotenv.config();&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1671072488364&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[nodemon] restarting due to changes...
[nodemon] starting `node index.js`
Example app listening on port 3001
저장완료&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;&lt;b&gt; 결론&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;env를 사용시 auth오류가 뜰 경우 dotenv 라이브러리를 통해 오류를 해결해 보자~❕&lt;/p&gt;</description>
      <category>정보/오류노트</category>
      <author>LeeWang_31</author>
      <guid isPermaLink="true">https://leewang31.tistory.com/243</guid>
      <comments>https://leewang31.tistory.com/243#entry243comment</comments>
      <pubDate>Thu, 15 Dec 2022 11:51:01 +0900</pubDate>
    </item>
    <item>
      <title>[Node.js/MongoDB] MongoDB에 데이터 저장하기</title>
      <link>https://leewang31.tistory.com/242</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buWlCQ/btrTEZgpsPy/zVR9gjl9iRzUcLlPry4EUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buWlCQ/btrTEZgpsPy/zVR9gjl9iRzUcLlPry4EUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buWlCQ/btrTEZgpsPy/zVR9gjl9iRzUcLlPry4EUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuWlCQ%2FbtrTEZgpsPy%2FzVR9gjl9iRzUcLlPry4EUK%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;600&quot; height=&quot;600&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;코딩애플님의 Node.js, MongoDB로 2시간 만에 빠르게 웹서비스 만들기 강의를 듣고 복습의 목적으로 작성하였습니다&lt;/blockquote&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;MongoDB에&amp;nbsp;데이터&amp;nbsp;저장하기&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;MongoDB설정&lt;/b&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;958&quot; data-origin-height=&quot;590&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/REAbs/btrTDmDnirO/WHaMkPqmalWzd2nKULHA81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/REAbs/btrTDmDnirO/WHaMkPqmalWzd2nKULHA81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/REAbs/btrTDmDnirO/WHaMkPqmalWzd2nKULHA81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FREAbs%2FbtrTDmDnirO%2FWHaMkPqmalWzd2nKULHA81%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;958&quot; height=&quot;590&quot; data-origin-width=&quot;958&quot; data-origin-height=&quot;590&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MongoDB로 돌아와 다음을 눌러줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;352&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/crsiDr/btrTFaIWe6f/qkH39weGTikkAxaHdaOFoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/crsiDr/btrTFaIWe6f/qkH39weGTikkAxaHdaOFoK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/crsiDr/btrTFaIWe6f/qkH39weGTikkAxaHdaOFoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcrsiDr%2FbtrTFaIWe6f%2FqkH39weGTikkAxaHdaOFoK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1014&quot; height=&quot;352&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;352&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;collection으로 들어갑니다&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;974&quot; data-origin-height=&quot;546&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4oWui/btrTGlpob2N/qqkccn74cBm05C9CDg4DE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4oWui/btrTGlpob2N/qqkccn74cBm05C9CDg4DE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4oWui/btrTGlpob2N/qqkccn74cBm05C9CDg4DE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4oWui%2FbtrTGlpob2N%2Fqqkccn74cBm05C9CDg4DE1%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;974&quot; height=&quot;546&quot; data-origin-width=&quot;974&quot; data-origin-height=&quot;546&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;add my own data를 눌러줍니다.&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;415&quot; data-origin-height=&quot;429&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lgpf0/btrTFnBhs6K/1jIWAW0rtVVuZmajhSSqO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lgpf0/btrTFnBhs6K/1jIWAW0rtVVuZmajhSSqO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lgpf0/btrTFnBhs6K/1jIWAW0rtVVuZmajhSSqO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flgpf0%2FbtrTFnBhs6K%2F1jIWAW0rtVVuZmajhSSqO0%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;415&quot; height=&quot;429&quot; data-origin-width=&quot;415&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;다음과 같이 원하는 방법으로 작성을 하고 create를 눌러줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;818&quot; data-origin-height=&quot;483&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KjT0s/btrTFKbWCwA/97KiWu2GUodf05BSdQGbVK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KjT0s/btrTFKbWCwA/97KiWu2GUodf05BSdQGbVK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KjT0s/btrTFKbWCwA/97KiWu2GUodf05BSdQGbVK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKjT0s%2FbtrTFKbWCwA%2F97KiWu2GUodf05BSdQGbVK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;818&quot; height=&quot;483&quot; data-origin-width=&quot;818&quot; data-origin-height=&quot;483&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;b&gt;js설정&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터를 담아줄 db라는 변수를 생성합니다.&lt;/p&gt;
&lt;pre class=&quot;typescript&quot;&gt;&lt;code&gt;//index.js
const express = require('express')
const app = express()
const port = 3001
const bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({extended: true}))

let db;

const MongoClient = require('mongodb').MongoClient;
MongoClient.connect(`mongodb+srv://${process.env.MONGODB_USER_ID}:${process.env.MONGODB_USER_PW}@cluster0.pso4lve.mongodb.net/?retryWrites=true&amp;amp;w=majority`, function (err, client) {
    if (err) {
        return console.log(err)
    }
    app.listen(port, () =&amp;gt; {
        console.log(`Example app listening on port ${port}`)
    });
})

app.get('/', (req, res) =&amp;gt; {
    res.sendFile(__dirname + '/index.html');
})
app.get('/write', (req, res) =&amp;gt; {
    res.sendFile(__dirname + '/write.html');
})
app.post('/add', function (req, res) {
    console.log(req.body);
    res.send('전송완료')
});&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;connect 콜백함수 안에서 db와 mongoDB의 폴더인 &lt;b&gt;todoApp&lt;/b&gt;을 연결해줍니다&lt;/p&gt;
&lt;pre id=&quot;code_1671070624179&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;db = client.db('todoApp');&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;그 아래 db를 통해 collection인 &lt;b&gt;post&lt;/b&gt;에 데이터를 보내줍니다&lt;/p&gt;
&lt;pre class=&quot;less&quot;&gt;&lt;code&gt;db.collection('post').insertOne({title: '고양이 밥주기', data: '12월20일'}, function (err, result) {
    console.log('저장완료');
});&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;insertOne은 첫 인자로 보낼 데이터를 객체 형태로 보내고 두번째 인자는 optional하게 사용되는데 콜백함수를 사용할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.mongodb.com/docs/manual/reference/method/db.collection.insertOne/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.mongodb.com/docs/manual/reference/method/db.collection.insertOne/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1671070987276&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;db.collection.insertOne() &amp;mdash; MongoDB Manual&quot; data-og-description=&quot;Docs Home &amp;rarr; MongoDB Manual db.collection.insertOne()mongosh MethodThis page documents a mongosh method. This is not the documentation for database commands or language-specific drivers, such as Node.js.For the database command, see the insert command.For&quot; data-og-host=&quot;www.mongodb.com&quot; data-og-source-url=&quot;https://www.mongodb.com/docs/manual/reference/method/db.collection.insertOne/&quot; data-og-url=&quot;https://www.mongodb.com/docs/manual/reference/method/db.collection.insertOne/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b92atS/hyQU7FKTnj/AHbhdtWWUr6ikzYlFosBh1/img.png?width=1200&amp;amp;height=601&amp;amp;face=0_0_1200_601,https://scrap.kakaocdn.net/dn/c6odt3/hyQUZHILDH/s3a9MPvT0xplijmA6pi1ak/img.png?width=1200&amp;amp;height=601&amp;amp;face=0_0_1200_601&quot;&gt;&lt;a href=&quot;https://www.mongodb.com/docs/manual/reference/method/db.collection.insertOne/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.mongodb.com/docs/manual/reference/method/db.collection.insertOne/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b92atS/hyQU7FKTnj/AHbhdtWWUr6ikzYlFosBh1/img.png?width=1200&amp;amp;height=601&amp;amp;face=0_0_1200_601,https://scrap.kakaocdn.net/dn/c6odt3/hyQUZHILDH/s3a9MPvT0xplijmA6pi1ak/img.png?width=1200&amp;amp;height=601&amp;amp;face=0_0_1200_601');&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;db.collection.insertOne() &amp;mdash; MongoDB Manual&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Docs Home &amp;rarr; MongoDB Manual db.collection.insertOne()mongosh MethodThis page documents a mongosh method. This is not the documentation for database commands or language-specific drivers, such as Node.js.For the database command, see the insert command.For&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.mongodb.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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;329&quot; data-origin-height=&quot;122&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6wsTB/btrTFKiKIKn/Eb1FZ90EdN70SMKjQPc5Hk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6wsTB/btrTFKiKIKn/Eb1FZ90EdN70SMKjQPc5Hk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6wsTB/btrTFKiKIKn/Eb1FZ90EdN70SMKjQPc5Hk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6wsTB%2FbtrTFKiKIKn%2FEb1FZ90EdN70SMKjQPc5Hk%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;329&quot; height=&quot;122&quot; data-origin-width=&quot;329&quot; data-origin-height=&quot;122&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;1305&quot; data-origin-height=&quot;733&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kFGJO/btrTEX3Uwi8/rocIzA7PV5AxTDkmVKaGwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kFGJO/btrTEX3Uwi8/rocIzA7PV5AxTDkmVKaGwK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kFGJO/btrTEX3Uwi8/rocIzA7PV5AxTDkmVKaGwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkFGJO%2FbtrTEX3Uwi8%2FrocIzA7PV5AxTDkmVKaGwK%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;1305&quot; height=&quot;733&quot; data-origin-width=&quot;1305&quot; data-origin-height=&quot;733&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저장이 잘 되었음을 알수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;html에서 데이터 넘겨주기&lt;/b&gt;&lt;/h3&gt;
&lt;pre class=&quot;typescript&quot;&gt;&lt;code&gt;//index.js
const dotenv = require('dotenv')
const express = require('express')
const app = express()
const port = 3001
const bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({extended: true}))
dotenv.config();

let db;
const MongoClient = require('mongodb').MongoClient;
MongoClient.connect(`mongodb+srv://${process.env.MONGODB_USER_ID}:${process.env.MONGODB_USER_PW}@cluster0.pso4lve.mongodb.net/?retryWrites=true&amp;amp;w=majority`,
    function (err, client) {
        if (err) {
            return console.log(err)
        }
        db = client.db('todoApp');

        app.post('/add', function (req, res) {
            console.log(req.body);
            db.collection('post').insertOne({title: req.body.title, data: req.body.date}, function (err, result) {
                console.log('저장완료');
            });
            res.send('전송완료')
        });
    })

app.get('/', (req, res) =&amp;gt; {
    res.sendFile(__dirname + '/index.html');
})
app.get('/write', (req, res) =&amp;gt; {
    res.sendFile(__dirname + '/write.html');
})
app.listen(port, () =&amp;gt; {
    console.log(`Example app listening on port ${port}`)
});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;req.body에 html에서 보내주는 데이터가 저장되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각각을 객체 형식에 맞게 보내주면 된다&lt;/p&gt;</description>
      <category>백엔드/node</category>
      <author>LeeWang_31</author>
      <guid isPermaLink="true">https://leewang31.tistory.com/242</guid>
      <comments>https://leewang31.tistory.com/242#entry242comment</comments>
      <pubDate>Thu, 15 Dec 2022 11:38:13 +0900</pubDate>
    </item>
    <item>
      <title>[Node.js/MongoDB] MongoDB 세팅 (무료호스팅)</title>
      <link>https://leewang31.tistory.com/241</link>
      <description>&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;600&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CZ9bY/btrTJwRjg7Z/5hUDsc5U97w9KuWKWA7HRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CZ9bY/btrTJwRjg7Z/5hUDsc5U97w9KuWKWA7HRk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CZ9bY/btrTJwRjg7Z/5hUDsc5U97w9KuWKWA7HRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCZ9bY%2FbtrTJwRjg7Z%2F5hUDsc5U97w9KuWKWA7HRk%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;600&quot; height=&quot;600&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;코딩애플님의 Node.js, MongoDB로 2시간 만에 빠르게 웹서비스 만들기 강의를 듣고 복습의 목적으로 작성하였습니다&lt;/blockquote&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;MongoDB&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;426&quot; data-origin-height=&quot;193&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bdR4v5/btrTELJvJmZ/t6dlg9z5eRfGk9qWeXOAzK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bdR4v5/btrTELJvJmZ/t6dlg9z5eRfGk9qWeXOAzK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bdR4v5/btrTELJvJmZ/t6dlg9z5eRfGk9qWeXOAzK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdR4v5%2FbtrTELJvJmZ%2Ft6dlg9z5eRfGk9qWeXOAzK%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;426&quot; height=&quot;193&quot; data-origin-width=&quot;426&quot; data-origin-height=&quot;193&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이전에 post로 보낸 데이터를 mongoDB에 저장해보겠습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;DB의 종류&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;관계형DB
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;sql이라는언어를 사용해 데이터를 다룬다&lt;/li&gt;
&lt;li&gt;쿼리를 만들어 사용&lt;/li&gt;
&lt;li&gt;빠르고 효율적&lt;/li&gt;
&lt;li&gt;MySql, Oracle 등등&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;NoSQL
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;객체 자료형으로 입출력 가능&lt;/li&gt;
&lt;li&gt;데이터 입출력에만 신경씀&lt;/li&gt;
&lt;li&gt;Dynamo, MongoDB 등등&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;MongoDB 세팅&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;a title=&quot;MongoDB atlas&quot; href=&quot;https://www.mongodb.com/cloud/atlas/lp/try4?utm_source=google&amp;amp;utm_campaign=search_gs_pl_evergreen_atlas_core_prosp-brand_gic-null_apac-kr_ps-all_desktop_eng_lead&amp;amp;utm_term=mongodb%20atlas&amp;amp;utm_medium=cpc_paid_search&amp;amp;utm_ad=e&amp;amp;utm_ad_campaign_id=12212624365&amp;amp;adgroup=115749706543&amp;amp;gclid=CjwKCAiAheacBhB8EiwAItVO25CO8yersVm4L9PDELBufOC1fOyc63l8gQjT-3xD7C9AgigshzAuMBoCJmAQAvD_BwE&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.mongodb.com/cloud/atlas/lp/try4?utm_source=google&amp;amp;utm_campaign=search_gs_pl_evergreen_atlas_core_prosp-brand_gic-null_apac-kr_ps-all_desktop_eng_lead&amp;amp;utm_term=mongodb%20atlas&amp;amp;utm_medium=cpc_paid_search&amp;amp;utm_ad=e&amp;amp;utm_ad_campaign_id=12212624365&amp;amp;adgroup=115749706543&amp;amp;gclid=CjwKCAiAheacBhB8EiwAItVO25CO8yersVm4L9PDELBufOC1fOyc63l8gQjT-3xD7C9AgigshzAuMBoCJmAQAvD_BwE&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1671067036374&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;MongoDB Atlas: Cloud Document Database&quot; data-og-description=&quot;Cloud-hosted MongoDB service on AWS, Azure, and GCP&quot; data-og-host=&quot;www.mongodb.com&quot; data-og-source-url=&quot;https://www.mongodb.com/cloud/atlas/lp/try4?utm_source=google&amp;amp;utm_campaign=search_gs_pl_evergreen_atlas_core_prosp-brand_gic-null_apac-kr_ps-all_desktop_eng_lead&amp;amp;utm_term=mongodb%20atlas&amp;amp;utm_medium=cpc_paid_search&amp;amp;utm_ad=e&amp;amp;utm_ad_campaign_id=12212624365&amp;amp;adgroup=115749706543&amp;amp;gclid=CjwKCAiAheacBhB8EiwAItVO25CO8yersVm4L9PDELBufOC1fOyc63l8gQjT-3xD7C9AgigshzAuMBoCJmAQAvD_BwE&quot; data-og-url=&quot;https://www.mongodb.com/cloud/atlas/lp/try4&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/lDQlW/hyQU6fJV5i/yBYBYOc3OAcAK0tEdAAHuk/img.png?width=1200&amp;amp;height=601&amp;amp;face=0_0_1200_601&quot;&gt;&lt;a href=&quot;https://www.mongodb.com/cloud/atlas/lp/try4?utm_source=google&amp;amp;utm_campaign=search_gs_pl_evergreen_atlas_core_prosp-brand_gic-null_apac-kr_ps-all_desktop_eng_lead&amp;amp;utm_term=mongodb%20atlas&amp;amp;utm_medium=cpc_paid_search&amp;amp;utm_ad=e&amp;amp;utm_ad_campaign_id=12212624365&amp;amp;adgroup=115749706543&amp;amp;gclid=CjwKCAiAheacBhB8EiwAItVO25CO8yersVm4L9PDELBufOC1fOyc63l8gQjT-3xD7C9AgigshzAuMBoCJmAQAvD_BwE&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.mongodb.com/cloud/atlas/lp/try4?utm_source=google&amp;amp;utm_campaign=search_gs_pl_evergreen_atlas_core_prosp-brand_gic-null_apac-kr_ps-all_desktop_eng_lead&amp;amp;utm_term=mongodb%20atlas&amp;amp;utm_medium=cpc_paid_search&amp;amp;utm_ad=e&amp;amp;utm_ad_campaign_id=12212624365&amp;amp;adgroup=115749706543&amp;amp;gclid=CjwKCAiAheacBhB8EiwAItVO25CO8yersVm4L9PDELBufOC1fOyc63l8gQjT-3xD7C9AgigshzAuMBoCJmAQAvD_BwE&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/lDQlW/hyQU6fJV5i/yBYBYOc3OAcAK0tEdAAHuk/img.png?width=1200&amp;amp;height=601&amp;amp;face=0_0_1200_601');&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;MongoDB Atlas: Cloud Document Database&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Cloud-hosted MongoDB service on AWS, Azure, and GCP&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.mongodb.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;1920&quot; data-origin-height=&quot;1040&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/J4FKb/btrTItmTckI/UilvTqW41KlJQz4a7VMnik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/J4FKb/btrTItmTckI/UilvTqW41KlJQz4a7VMnik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/J4FKb/btrTItmTckI/UilvTqW41KlJQz4a7VMnik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJ4FKb%2FbtrTItmTckI%2FUilvTqW41KlJQz4a7VMnik%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;1920&quot; height=&quot;1040&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1040&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;start free를 누르고 간단한 회원가입을 진행합니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://developer88.tistory.com/421&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://developer88.tistory.com/421&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1671067985628&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;MongoDB Atlas 무료 로 사용하기&quot; data-og-description=&quot;오늘은 MongoDB의 Atlas서비스를 무료로 사용하는 방법에 대해서 정리해 보겠습니다. 1. Cluster 만들기 가장 먼저 해야할 것은 Cluster를 만드는 것 입니다. 회원가입을 하였다면, 우측 상단에 New Project &quot; data-og-host=&quot;developer88.tistory.com&quot; data-og-source-url=&quot;https://developer88.tistory.com/421&quot; data-og-url=&quot;https://developer88.tistory.com/421&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/iUdUQ/hyQU7TghYi/wce2VVxk03RiT13CGJKOz0/img.png?width=756&amp;amp;height=541&amp;amp;face=0_0_756_541,https://scrap.kakaocdn.net/dn/cciwp0/hyQTLK4MpY/hWqE7YYfmzTFMAktctuwSK/img.png?width=886&amp;amp;height=962&amp;amp;face=0_0_886_962&quot;&gt;&lt;a href=&quot;https://developer88.tistory.com/421&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer88.tistory.com/421&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/iUdUQ/hyQU7TghYi/wce2VVxk03RiT13CGJKOz0/img.png?width=756&amp;amp;height=541&amp;amp;face=0_0_756_541,https://scrap.kakaocdn.net/dn/cciwp0/hyQTLK4MpY/hWqE7YYfmzTFMAktctuwSK/img.png?width=886&amp;amp;height=962&amp;amp;face=0_0_886_962');&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;MongoDB Atlas 무료 로 사용하기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;오늘은 MongoDB의 Atlas서비스를 무료로 사용하는 방법에 대해서 정리해 보겠습니다. 1. Cluster 만들기 가장 먼저 해야할 것은 Cluster를 만드는 것 입니다. 회원가입을 하였다면, 우측 상단에 New Project&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developer88.tistory.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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;596&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KSjeB/btrTGX2QGMa/bMcJlCPKoCoytkB7jhvlw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KSjeB/btrTGX2QGMa/bMcJlCPKoCoytkB7jhvlw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KSjeB/btrTGX2QGMa/bMcJlCPKoCoytkB7jhvlw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKSjeB%2FbtrTGX2QGMa%2FbMcJlCPKoCoytkB7jhvlw1%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;941&quot; height=&quot;596&quot; data-origin-width=&quot;941&quot; data-origin-height=&quot;596&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 connect을 눌러줍니다.&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;631&quot; data-origin-height=&quot;552&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cK0sBX/btrTGk45Zat/jcGMyDAT7OuUEtBTJTho80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cK0sBX/btrTGk45Zat/jcGMyDAT7OuUEtBTJTho80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cK0sBX/btrTGk45Zat/jcGMyDAT7OuUEtBTJTho80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcK0sBX%2FbtrTGk45Zat%2FjcGMyDAT7OuUEtBTJTho80%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;631&quot; height=&quot;552&quot; data-origin-width=&quot;631&quot; data-origin-height=&quot;552&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;connect your application을 눌러줍니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 해당 화면이 나오지 않는 경우 이전 단계인 setup connection security가 완료가 되지 않았기 때문입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;그런 경우&amp;nbsp; 우측 security에서 create user을 진행해줘야합니다&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;631&quot; data-origin-height=&quot;486&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MIKZx/btrTFX3lrpr/SYfU0jc5nL0Hik6ByZffJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MIKZx/btrTFX3lrpr/SYfU0jc5nL0Hik6ByZffJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MIKZx/btrTFX3lrpr/SYfU0jc5nL0Hik6ByZffJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMIKZx%2FbtrTFX3lrpr%2FSYfU0jc5nL0Hik6ByZffJk%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;631&quot; height=&quot;486&quot; data-origin-width=&quot;631&quot; data-origin-height=&quot;486&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 url은 따로 저장을 해야합니다 여기 나오는 password는 security에서 create user할때 설정한 비밀번호입니다&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;sever와 mongoDB연결&lt;/b&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;.env파일을 생성했습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.env파일에 다음과 같이 작성했습니다. 여기서 ID,PW는 create user의 id와pw입니다.&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;ini&quot;&gt;&lt;code&gt;MONGODB_USER_ID=ID
MONGODB_USER_PW=PW&lt;/code&gt;&lt;/pre&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;a href=&quot;https://leewang31.tistory.com/243&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://leewang31.tistory.com/243&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1671072901004&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;[env] js에서 env파일 undefined /오류 코드 : &amp;quot;MongoServerError: bad auth : Authentication failed.&amp;quot;&quot; data-og-description=&quot;⛔문제 다음과 같이 mongoDB에 파일을 보낼 js파일을 만들었습니다. //index.js중 일부 const MongoClient = require('mongodb').MongoClient; MongoClient.connect(&amp;#96;mongodb+srv://${process.env.MONGODB_USER_ID}:${process.env.MONGODB_USER_PW}&quot; data-og-host=&quot;leewang31.tistory.com&quot; data-og-source-url=&quot;https://leewang31.tistory.com/243&quot; data-og-url=&quot;https://leewang31.tistory.com/243&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bJ5Zkn/hyQTFKRyvb/pkfW3L43M2Xl0oxMyq2mv1/img.jpg?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500,https://scrap.kakaocdn.net/dn/dIGhzC/hyQU1r1smU/NwFQa8YrbGGGyJYQLbkC0K/img.jpg?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500,https://scrap.kakaocdn.net/dn/0Eq5O/hyQTDTOFQ8/ukwG5cObbWLc8JANIh2odK/img.jpg?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500&quot;&gt;&lt;a href=&quot;https://leewang31.tistory.com/243&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://leewang31.tistory.com/243&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bJ5Zkn/hyQTFKRyvb/pkfW3L43M2Xl0oxMyq2mv1/img.jpg?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500,https://scrap.kakaocdn.net/dn/dIGhzC/hyQU1r1smU/NwFQa8YrbGGGyJYQLbkC0K/img.jpg?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500,https://scrap.kakaocdn.net/dn/0Eq5O/hyQTDTOFQ8/ukwG5cObbWLc8JANIh2odK/img.jpg?width=500&amp;amp;height=500&amp;amp;face=0_0_500_500');&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;[env] js에서 env파일 undefined /오류 코드 : &quot;MongoServerError: bad auth : Authentication failed.&quot;&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;⛔문제 다음과 같이 mongoDB에 파일을 보낼 js파일을 만들었습니다. //index.js중 일부 const MongoClient = require('mongodb').MongoClient; MongoClient.connect(`mongodb+srv://${process.env.MONGODB_USER_ID}:${process.env.MONGODB_USER_PW}&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;leewang31.tistory.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;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;typescript&quot;&gt;&lt;code&gt;//index.js
const express = require('express')
const app = express()
const port = 3001
const bodyParser= require('body-parser')
app.use(bodyParser.urlencoded({extended: true}))

app.get('/',(req,res)=&amp;gt;{
    res.sendFile(__dirname+'/index.html');
})
app.get('/write',(req,res)=&amp;gt;{
    res.sendFile(__dirname+'/write.html');
})
app.post('/add', function(req, res){
    console.log(req.body);
    res.send('전송완료')
});
app.listen(port, () =&amp;gt; {
    console.log(`Example app listening on port ${port}`)
})&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기에 mongoDb에 연결가능한 라이브러리를 가져오겠습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;터미널에 다음을 입력합니다&lt;/p&gt;
&lt;pre id=&quot;code_1671068717903&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm install mongodb&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;이후 require을 적은 문장들 아래쪽에 다음 코드를 추가했습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1671068636779&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const MongoClient = require('mongodb').MongoClient;&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;connect를 사용하여 mongoDB와 연결하겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 원래 코드에 있었던 listen을 connect의 콜백함수 안으로 옮겼습니다.&lt;/p&gt;
&lt;pre class=&quot;typescript&quot;&gt;&lt;code&gt;MongoClient.connect(`mongodb+srv://${process.env.MONGODB_USER_ID}:${process.env.MONGODB_USER_PW}@cluster0.pso4lve.mongodb.net/?retryWrites=true&amp;amp;w=majority`, function (err, client) {
    app.listen(port, () =&amp;gt; {
        console.log(`Example app listening on port ${port}`)
    });
})&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;403&quot; data-origin-height=&quot;171&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LFfS0/btrTFLhCJPA/1C6JvhT3m2Rc8KzKKxxneK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LFfS0/btrTFLhCJPA/1C6JvhT3m2Rc8KzKKxxneK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LFfS0/btrTFLhCJPA/1C6JvhT3m2Rc8KzKKxxneK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLFfS0%2FbtrTFLhCJPA%2F1C6JvhT3m2Rc8KzKKxxneK%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;403&quot; height=&quot;171&quot; data-origin-width=&quot;403&quot; data-origin-height=&quot;171&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제없이 작동 되고 있음을 알수 있습니다.&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;pre id=&quot;code_1671070077434&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//index.js
const express = require('express')
const app = express()
const port = 3001
const bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({extended: true}))

const MongoClient = require('mongodb').MongoClient;
MongoClient.connect(`mongodb+srv://${process.env.MONGODB_USER_ID}:${process.env.MONGODB_USER_PW}@cluster0.pso4lve.mongodb.net/?retryWrites=true&amp;amp;w=majority`, function (err, client) {
    if (err) {
        return console.log(err)
    }
    app.listen(port, () =&amp;gt; {
        console.log(`Example app listening on port ${port}`)
    });
})

app.get('/', (req, res) =&amp;gt; {
    res.sendFile(__dirname + '/index.html');
})
app.get('/write', (req, res) =&amp;gt; {
    res.sendFile(__dirname + '/write.html');
})
app.post('/add', function (req, res) {
    console.log(req.body);
    res.send('전송완료')
});&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>백엔드/node</category>
      <author>LeeWang_31</author>
      <guid isPermaLink="true">https://leewang31.tistory.com/241</guid>
      <comments>https://leewang31.tistory.com/241#entry241comment</comments>
      <pubDate>Thu, 15 Dec 2022 11:08:27 +0900</pubDate>
    </item>
    <item>
      <title>[Node.js/MongoDB] Post 데이터 넘기기</title>
      <link>https://leewang31.tistory.com/240</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;600&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PdR8v/btrTFLBp6kJ/kFK8q0uoRDPOoPjKM2HW30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PdR8v/btrTFLBp6kJ/kFK8q0uoRDPOoPjKM2HW30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PdR8v/btrTFLBp6kJ/kFK8q0uoRDPOoPjKM2HW30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPdR8v%2FbtrTFLBp6kJ%2FkFK8q0uoRDPOoPjKM2HW30%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;600&quot; height=&quot;600&quot; data-origin-width=&quot;600&quot; data-origin-height=&quot;600&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;코딩애플님의 Node.js, MongoDB로 2시간 만에 빠르게 웹서비스 만들기 강의를 듣고 복습의 목적으로 작성하였습니다&lt;/blockquote&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Post&lt;/h2&gt;
&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;//index.js
const express = require('express')
const app = express()
const port = 3001

app.get('/',(req,res)=&amp;gt;{
    res.sendFile(__dirname+'/index.html');
})
app.get('/write',(req,res)=&amp;gt;{
    res.sendFile(__dirname+'/write.html');
})
app.listen(port, () =&amp;gt; {
    console.log(`Example app listening on port ${port}`)
})&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;&amp;lt;!-- index.html --&amp;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, shrink-to-fit=no&quot;&amp;gt;

    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css&quot; integrity=&quot;sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N&quot; crossorigin=&quot;anonymous&quot;&amp;gt;

    &amp;lt;title&amp;gt;Home&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;nav class=&quot;nav nav-pills flex-column flex-sm-row&quot;&amp;gt;
    &amp;lt;a class=&quot;flex-sm-fill text-sm-center nav-link active&quot; href=&quot;#&quot;&amp;gt;Home&amp;lt;/a&amp;gt;
    &amp;lt;a class=&quot;flex-sm-fill text-sm-center nav-link&quot; href=&quot;#&quot;&amp;gt;TODO&amp;lt;/a&amp;gt;
    &amp;lt;a class=&quot;flex-sm-fill text-sm-center nav-link&quot; href=&quot;#&quot;&amp;gt;Write&amp;lt;/a&amp;gt;
    &amp;lt;a class=&quot;flex-sm-fill text-sm-center nav-link&quot; href=&quot;#&quot;&amp;gt;etc&amp;lt;/a&amp;gt;
&amp;lt;/nav&amp;gt;
&amp;lt;h4&amp;gt;Home&amp;lt;/h4&amp;gt;
&amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js&quot; integrity=&quot;sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj&quot; crossorigin=&quot;anonymous&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js&quot; integrity=&quot;sha384-Fy6S3B9q64WdZWQUiU+q4/2Lc9npb8tCaSX9FK7E8HnRr0Jz8D6OP9dO5Vg3Q9ct&quot; crossorigin=&quot;anonymous&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;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;&amp;lt;!-- write.html --&amp;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, shrink-to-fit=no&quot;&amp;gt;

  &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css&quot; integrity=&quot;sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N&quot; crossorigin=&quot;anonymous&quot;&amp;gt;

  &amp;lt;title&amp;gt;Hello, world!&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;nav class=&quot;nav nav-pills flex-column flex-sm-row&quot;&amp;gt;
  &amp;lt;a class=&quot;flex-sm-fill text-sm-center nav-link&quot; href=&quot;#&quot;&amp;gt;Home&amp;lt;/a&amp;gt;
  &amp;lt;a class=&quot;flex-sm-fill text-sm-center nav-link&quot; href=&quot;#&quot;&amp;gt;TODO&amp;lt;/a&amp;gt;
  &amp;lt;a class=&quot;flex-sm-fill text-sm-center nav-link active&quot; href=&quot;#&quot;&amp;gt;Write&amp;lt;/a&amp;gt;
  &amp;lt;a class=&quot;flex-sm-fill text-sm-center nav-link&quot; href=&quot;#&quot;&amp;gt;etc&amp;lt;/a&amp;gt;
&amp;lt;/nav&amp;gt;
&amp;lt;h4&amp;gt;Write&amp;lt;/h4&amp;gt;
&amp;lt;div class=&quot;container mt-3&quot;&amp;gt;
  &amp;lt;form&amp;gt;
    &amp;lt;div class=&quot;form-group&quot;&amp;gt;
      &amp;lt;label&amp;gt;오늘의 할일&amp;lt;/label&amp;gt;
      &amp;lt;input type=&quot;text&quot; class=&quot;form-control&quot; name=&quot;title&quot;&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;div class=&quot;form-group&quot;&amp;gt;
      &amp;lt;label&amp;gt;날짜&amp;lt;/label&amp;gt;
      &amp;lt;input type=&quot;text&quot; class=&quot;form-control&quot; name=&quot;date&quot;&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;button type=&quot;submit&quot; class=&quot;btn btn-primary&quot;&amp;gt;Submit&amp;lt;/button&amp;gt;
  &amp;lt;/form&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js&quot; integrity=&quot;sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj&quot; crossorigin=&quot;anonymous&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js&quot; integrity=&quot;sha384-Fy6S3B9q64WdZWQUiU+q4/2Lc9npb8tCaSX9FK7E8HnRr0Jz8D6OP9dO5Vg3Q9ct&quot; crossorigin=&quot;anonymous&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;다음코드를 사용했습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;bootstrap사용했습니다 사용 방법은 아래 링크를 확인해 주세요&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://leewang31.tistory.com/239&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://leewang31.tistory.com/239&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;write.html의 from에 다음코드를 적어 줍니다.&lt;/p&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;&amp;lt;form action=&quot;/add&quot; method=&quot;post&quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;action으로 경로를 정하고, method로 crud(get, post, put, delete...)를 정합니다&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;form태그 안에 출력을할 submit기능의 button이 필요합니다.&lt;/p&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;&amp;lt;button type=&quot;submit&quot;&amp;gt;Submit&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;index.js로 돌아갑니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;post로 보내준 데이터를 확인하기 위해 body-parser를 다운 받아야 합니다.&lt;/p&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;npm i body-parser&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;설치가 끝나고 서버js에 다음 코드를 작성해줍니다.&lt;/p&gt;
&lt;pre class=&quot;isbl&quot;&gt;&lt;code&gt;const bodyParser= require('body-parser')
app.use(bodyParser.urlencoded({extended: true}))&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;post를 받는 경로는 /add이기 떄문에 아래 코드로 데이터가 잘 넘어 오는지 확인 합니다&lt;/p&gt;
&lt;pre class=&quot;javascript&quot;&gt;&lt;code&gt;app.post('/add', function(req, res){
    console.log(req.body);
    res.send('전송완료')
});&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;req,body라는게 보입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;req는 요청입니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;post로 요청한 데이터가 req에 저장되어 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;req중 body에 해당 데이터가 저장됩니다. 여기서 말하는 데이터는 hrml에서 input태그 안에 있는 내용을 말합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 데이터는 input의 name을 키가 된 모습으로 객체의 형태를 갖게 됩니다.&lt;/p&gt;
&lt;pre class=&quot;pgsql&quot;&gt;&lt;code&gt;&amp;lt;input type=&quot;text&quot; class=&quot;form-control&quot; name=&quot;date&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;http://localhost:3001/write에서 각각의 input에 내용을 적겠습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;957&quot; data-origin-height=&quot;423&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QkAeT/btrTFKCut2q/vsi7X3XClrX2CKuKpcNC31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QkAeT/btrTFKCut2q/vsi7X3XClrX2CKuKpcNC31/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QkAeT/btrTFKCut2q/vsi7X3XClrX2CKuKpcNC31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQkAeT%2FbtrTFKCut2q%2Fvsi7X3XClrX2CKuKpcNC31%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;957&quot; height=&quot;423&quot; data-origin-width=&quot;957&quot; data-origin-height=&quot;423&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mE6Wa/btrTDZAHcls/cYB1W3GMlzT4iuhBP8XKa1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mE6Wa/btrTDZAHcls/cYB1W3GMlzT4iuhBP8XKa1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mE6Wa/btrTDZAHcls/cYB1W3GMlzT4iuhBP8XKa1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmE6Wa%2FbtrTDZAHcls%2FcYB1W3GMlzT4iuhBP8XKa1%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;1920&quot; height=&quot;1080&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>백엔드/node</category>
      <author>LeeWang_31</author>
      <guid isPermaLink="true">https://leewang31.tistory.com/240</guid>
      <comments>https://leewang31.tistory.com/240#entry240comment</comments>
      <pubDate>Wed, 14 Dec 2022 17:57:27 +0900</pubDate>
    </item>
    <item>
      <title>[CSS] Bootstrap사용하여 간단하게 html, css만들기!</title>
      <link>https://leewang31.tistory.com/239</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/m6gtb/btrTFczfo65/u6Ljmqw1vEgvLqZYZnZzIK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/m6gtb/btrTFczfo65/u6Ljmqw1vEgvLqZYZnZzIK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/m6gtb/btrTFczfo65/u6Ljmqw1vEgvLqZYZnZzIK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fm6gtb%2FbtrTFczfo65%2Fu6Ljmqw1vEgvLqZYZnZzIK%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;500&quot; height=&quot;500&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;500&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://getbootstrap.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://getbootstrap.com/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1671004595242&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&quot; data-og-description=&quot;Powerful, extensible, and feature-packed frontend toolkit. Build and customize with Sass, utilize prebuilt grid system and components, and bring projects to life with powerful JavaScript plugins.&quot; data-og-host=&quot;getbootstrap.com&quot; data-og-source-url=&quot;https://getbootstrap.com/&quot; data-og-url=&quot;https://getbootstrap.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/wT4M4/hyQTKxU7h8/8nPrRsSVxcgKVi8zaP5JIk/img.png?width=2000&amp;amp;height=1000&amp;amp;face=0_0_2000_1000,https://scrap.kakaocdn.net/dn/uCR65/hyQTyK6hRH/nem5J4WkwBu0fVkzxGyHK1/img.png?width=700&amp;amp;height=500&amp;amp;face=0_0_700_500&quot;&gt;&lt;a href=&quot;https://getbootstrap.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://getbootstrap.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/wT4M4/hyQTKxU7h8/8nPrRsSVxcgKVi8zaP5JIk/img.png?width=2000&amp;amp;height=1000&amp;amp;face=0_0_2000_1000,https://scrap.kakaocdn.net/dn/uCR65/hyQTyK6hRH/nem5J4WkwBu0fVkzxGyHK1/img.png?width=700&amp;amp;height=500&amp;amp;face=0_0_700_500');&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&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Powerful, extensible, and feature-packed frontend toolkit. Build and customize with Sass, utilize prebuilt grid system and components, and bring projects to life with powerful JavaScript plugins.&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;1920&quot; data-origin-height=&quot;1030&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nwzZQ/btrTEZmuPt2/XfBlpZPZbGQw9qDZsCuKKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nwzZQ/btrTEZmuPt2/XfBlpZPZbGQw9qDZsCuKKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nwzZQ/btrTEZmuPt2/XfBlpZPZbGQw9qDZsCuKKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnwzZQ%2FbtrTEZmuPt2%2FXfBlpZPZbGQw9qDZsCuKKk%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;1920&quot; height=&quot;1030&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1030&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우측을 클릭해서 버전을 다르게 다운 받을수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버전마다 브라우저 호환이 다르기 때문에 잘 확인 해야합니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원하는 버전을 클릭하면 &lt;span style=&quot;background-color: #ffffff; color: #212529;&quot;&gt;Starter template라는 제목의 글이 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;!doctype html&amp;gt;
&amp;lt;html lang=&quot;en&quot;&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;!-- Required meta tags --&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, shrink-to-fit=no&quot;&amp;gt;

    &amp;lt;!-- Bootstrap CSS --&amp;gt;
    &amp;lt;link rel=&quot;stylesheet&quot; href=&quot;https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css&quot; integrity=&quot;sha384-xOolHFLEh07PJGoPkLv1IbcEPTNtaed2xpHsD9ESMhqIYd0nLMwNLD69Npy4HI+N&quot; crossorigin=&quot;anonymous&quot;&amp;gt;

    &amp;lt;title&amp;gt;Hello, world!&amp;lt;/title&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
    &amp;lt;h1&amp;gt;Hello, world!&amp;lt;/h1&amp;gt;

    &amp;lt;!-- Optional JavaScript; choose one of the two! --&amp;gt;

    &amp;lt;!-- Option 1: jQuery and Bootstrap Bundle (includes Popper) --&amp;gt;
    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.slim.min.js&quot; integrity=&quot;sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj&quot; crossorigin=&quot;anonymous&quot;&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src=&quot;https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js&quot; integrity=&quot;sha384-Fy6S3B9q64WdZWQUiU+q4/2Lc9npb8tCaSX9FK7E8HnRr0Jz8D6OP9dO5Vg3Q9ct&quot; crossorigin=&quot;anonymous&quot;&amp;gt;&amp;lt;/script&amp;gt;

    &amp;lt;!-- Option 2: Separate Popper and Bootstrap JS --&amp;gt;
    &amp;lt;!--
 --&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;다음과 같은 html 코드가 있는데, 이게 bootstrap을 사용할 기본 설정입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 네비게이션 바를 만들고 싶은 경우 상단 검색 기능을 사용해서 'Navs'를 검색합니다.&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;1030&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/L5A3p/btrTFLBhmoy/0ZbDbnjhhmOFBc3NkFWcck/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/L5A3p/btrTFLBhmoy/0ZbDbnjhhmOFBc3NkFWcck/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/L5A3p/btrTFLBhmoy/0ZbDbnjhhmOFBc3NkFWcck/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FL5A3p%2FbtrTFLBhmoy%2F0ZbDbnjhhmOFBc3NkFWcck%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;600&quot; height=&quot;644&quot; data-origin-width=&quot;960&quot; data-origin-height=&quot;1030&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같이 사용했을때 화면에 보이는 방식과 코드가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드를 적절한 곳에 붙여 넣고 사용하면 끝입니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cwupEz/btrTFghcKCh/gSa3TJoaQL1enoAaekW5V0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cwupEz/btrTFghcKCh/gSa3TJoaQL1enoAaekW5V0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cwupEz/btrTFghcKCh/gSa3TJoaQL1enoAaekW5V0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcwupEz%2FbtrTFghcKCh%2FgSa3TJoaQL1enoAaekW5V0%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;1920&quot; height=&quot;1080&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>프론트엔드/CSS</category>
      <author>LeeWang_31</author>
      <guid isPermaLink="true">https://leewang31.tistory.com/239</guid>
      <comments>https://leewang31.tistory.com/239#entry239comment</comments>
      <pubDate>Wed, 14 Dec 2022 17:06:50 +0900</pubDate>
    </item>
  </channel>
</rss>