<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Kirby Dev</title>
    <link>https://kirby-dev.tistory.com/</link>
    <description>어떠한 차별도 존재하지 않는 세상을 만드는데 도움을 줄 수 있는 개발자가 되고자 합니다.</description>
    <language>ko</language>
    <pubDate>Sun, 5 Apr 2026 09:27:44 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>얌얌커비</managingEditor>
    <image>
      <title>Kirby Dev</title>
      <url>https://tistory1.daumcdn.net/tistory/7497336/attach/a42ba965b7c34d879c5e57e800e2795f</url>
      <link>https://kirby-dev.tistory.com</link>
    </image>
    <item>
      <title>플레이브 칼리고 파트2 미공포</title>
      <link>https://kirby-dev.tistory.com/entry/%ED%94%8C%EB%A0%88%EC%9D%B4%EB%B8%8C-%EC%B9%BC%EB%A6%AC%EA%B3%A0-%ED%8C%8C%ED%8A%B82-%EB%AF%B8%EA%B3%B5%ED%8F%AC</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;플레이브 칼리고 파트2 미공포&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;포토북 미공포 &amp;gt; 블래스트샵&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;포토카드 미공포 &amp;gt; 위버스샵&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아이디카드 미공포 &amp;gt; 올리브영&lt;/p&gt;</description>
      <author>얌얌커비</author>
      <guid isPermaLink="true">https://kirby-dev.tistory.com/20</guid>
      <comments>https://kirby-dev.tistory.com/entry/%ED%94%8C%EB%A0%88%EC%9D%B4%EB%B8%8C-%EC%B9%BC%EB%A6%AC%EA%B3%A0-%ED%8C%8C%ED%8A%B82-%EB%AF%B8%EA%B3%B5%ED%8F%AC#entry20comment</comments>
      <pubDate>Tue, 24 Mar 2026 11:42:07 +0900</pubDate>
    </item>
    <item>
      <title>디자이너와 개발자가 함께 알아야 할 UI 컴포넌트 설계 원칙</title>
      <link>https://kirby-dev.tistory.com/entry/%EB%94%94%EC%9E%90%EC%9D%B4%EB%84%88%EC%99%80-%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-%ED%95%A8%EA%BB%98-%EC%95%8C%EC%95%84%EC%95%BC-%ED%95%A0-UI-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8-%EC%84%A4%EA%B3%84-%EC%9B%90%EC%B9%99</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;디자이너와 개발자가 함께 알아야 할 UI 컴포넌트 설계 원칙.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;500&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cCNkJy/btsOMnSTk06/cyr6rl0dALgY9IvEI8rbv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cCNkJy/btsOMnSTk06/cyr6rl0dALgY9IvEI8rbv1/img.png&quot; data-alt=&quot;디자이너와&amp;amp;nbsp;개발자가&amp;amp;nbsp;함께&amp;amp;nbsp;알아야&amp;amp;nbsp;할&amp;amp;nbsp;UI&amp;amp;nbsp;컴포넌트&amp;amp;nbsp;설계&amp;amp;nbsp;원칙&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cCNkJy/btsOMnSTk06/cyr6rl0dALgY9IvEI8rbv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcCNkJy%2FbtsOMnSTk06%2Fcyr6rl0dALgY9IvEI8rbv1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;900&quot; height=&quot;500&quot; data-filename=&quot;디자이너와 개발자가 함께 알아야 할 UI 컴포넌트 설계 원칙.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;500&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;디자이너와&amp;nbsp;개발자가&amp;nbsp;함께&amp;nbsp;알아야&amp;nbsp;할&amp;nbsp;UI&amp;nbsp;컴포넌트&amp;nbsp;설계&amp;nbsp;원칙&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;디자이너와&lt;span&gt; &lt;/span&gt;개발자가&lt;span&gt; &lt;/span&gt;함께&lt;span&gt; &lt;/span&gt;알아야&lt;span&gt; &lt;/span&gt;할&lt;span&gt; UI &lt;/span&gt;컴포넌트&lt;span&gt; &lt;/span&gt;설계&lt;span&gt; &lt;/span&gt;원칙&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹 또는 앱을 구축하는 과정에서 UI 컴포넌트는 디자이너와 프론트엔드 개발자가 협업하는 가장 핵심적인 단위입니다. 일관되고 재사용 가능한 컴포넌트를 잘 설계하면 개발 속도는 물론 유지보수 효율성까지 크게 향상됩니다. 이 글에서는 2025년 기준 실무에서 요구되는 UI 컴포넌트 설계 원칙과&lt;span&gt; &lt;/span&gt;디자이너&lt;span&gt;-&lt;/span&gt;개발자&lt;span&gt; &lt;/span&gt;협업&lt;span&gt; &lt;/span&gt;전략을&lt;span&gt; &lt;/span&gt;소개합니다&lt;span&gt;.&lt;/span&gt;&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;span&gt;1. UI &lt;/span&gt;컴포넌트란&lt;span&gt; &lt;/span&gt;무엇인가&lt;span&gt;?&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ysDjv/btsOMTjJF6V/so1K57o4CQAHOqZwVv7y20/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ysDjv/btsOMTjJF6V/so1K57o4CQAHOqZwVv7y20/img.jpg&quot; data-origin-width=&quot;7454&quot; data-origin-height=&quot;4972&quot; data-is-animation=&quot;false&quot; data-filename=&quot;justin-morgan-ZjX-z2Q5zrk-unsplash.jpg&quot; style=&quot;width: 35.4462%; margin-right: 10px;&quot; data-widthpercent=&quot;36.29&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ysDjv/btsOMTjJF6V/so1K57o4CQAHOqZwVv7y20/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FysDjv%2FbtsOMTjJF6V%2Fso1K57o4CQAHOqZwVv7y20%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;7454&quot; height=&quot;4972&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bclS75/btsOKEuU3Ez/Fj8KdiugcuZA5XYwogUe2k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bclS75/btsOKEuU3Ez/Fj8KdiugcuZA5XYwogUe2k/img.jpg&quot; data-origin-width=&quot;4238&quot; data-origin-height=&quot;3744&quot; data-is-animation=&quot;false&quot; data-filename=&quot;budka-damdinsuren-xihqiK6rD9k-unsplash.jpg&quot; data-widthpercent=&quot;27.4&quot; style=&quot;width: 26.7631%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bclS75/btsOKEuU3Ez/Fj8KdiugcuZA5XYwogUe2k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbclS75%2FbtsOKEuU3Ez%2FFj8KdiugcuZA5XYwogUe2k%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;4238&quot; height=&quot;3744&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwBWfT/btsONye8AEL/bAssSlkh8a7ZZUYHJKK5Ok/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwBWfT/btsONye8AEL/bAssSlkh8a7ZZUYHJKK5Ok/img.jpg&quot; data-origin-width=&quot;5568&quot; data-origin-height=&quot;3712&quot; data-is-animation=&quot;false&quot; data-filename=&quot;kelly-sikkema-io0ZLYbu31s-unsplash.jpg&quot; style=&quot;width: 35.4652%;&quot; data-widthpercent=&quot;36.31&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwBWfT/btsONye8AEL/bAssSlkh8a7ZZUYHJKK5Ok/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwBWfT%2FbtsONye8AEL%2FbAssSlkh8a7ZZUYHJKK5Ok%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;5568&quot; height=&quot;3712&quot;/&gt;&lt;/span&gt;&lt;/div&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;span&gt;UI &lt;/span&gt;컴포넌트는&lt;span&gt; &lt;/span&gt;버튼&lt;span&gt;, &lt;/span&gt;카드&lt;span&gt;, &lt;/span&gt;입력창&lt;span&gt;, &lt;/span&gt;모달&lt;span&gt; &lt;/span&gt;등과&lt;span&gt; &lt;/span&gt;같이&lt;span&gt; &lt;/span&gt;사용자&lt;span&gt; &lt;/span&gt;인터페이스를&lt;span&gt; &lt;/span&gt;구성하는&lt;span&gt; &lt;/span&gt;기능&lt;span&gt; &lt;/span&gt;단위의&lt;span&gt; &lt;/span&gt;시각적&lt;span&gt; &lt;/span&gt;요소입니다&lt;span&gt;. &lt;/span&gt;컴포넌트는&lt;span&gt; &lt;/span&gt;보통&lt;span&gt; HTML, CSS, JavaScript&lt;/span&gt;로&lt;span&gt; &lt;/span&gt;구성되며&lt;span&gt;, &lt;/span&gt;디자이너는&lt;span&gt; &lt;/span&gt;이를&lt;span&gt; Figma&lt;/span&gt;나&lt;span&gt; Sketch&lt;/span&gt;에서&lt;span&gt; &lt;/span&gt;설계하고&lt;span&gt; &lt;/span&gt;개발자는&lt;span&gt; &lt;/span&gt;코드로&lt;span&gt; &lt;/span&gt;구현합니다&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를&lt;span&gt; &lt;/span&gt;들어&lt;span&gt; &lt;/span&gt;버튼&lt;span&gt; &lt;/span&gt;컴포넌트는&lt;span&gt; &lt;/span&gt;다음과&lt;span&gt; &lt;/span&gt;같은&lt;span&gt; &lt;/span&gt;상태를&lt;span&gt; &lt;/span&gt;포함할&lt;span&gt; &lt;/span&gt;수&lt;span&gt; &lt;/span&gt;있습니다 &lt;span&gt;:&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span&gt;기본&lt;/span&gt;&lt;/b&gt;(default)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span&gt;호버&lt;/span&gt;&lt;/b&gt;(hover)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span&gt;활성&lt;/span&gt;&lt;/b&gt;(active)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span&gt;비활성&lt;/span&gt;&lt;/b&gt;(disabled)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span&gt;로딩&lt;/span&gt; &lt;span&gt;중&lt;/span&gt;&lt;/b&gt;(loading)&lt;/li&gt;
&lt;/ul&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;span&gt;2. &lt;/span&gt;디자인&lt;span&gt; &lt;/span&gt;시스템과&lt;span&gt; &lt;/span&gt;컴포넌트의&lt;span&gt; &lt;/span&gt;관계&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rElRG/btsOMO3NKW8/XVGzyLi2CoKjmhAO37G4Qk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rElRG/btsOMO3NKW8/XVGzyLi2CoKjmhAO37G4Qk/img.jpg&quot; data-origin-width=&quot;6240&quot; data-origin-height=&quot;4160&quot; data-is-animation=&quot;false&quot; data-filename=&quot;aluminum-disemboweler3000-W74cfpKKy80-unsplash.jpg&quot; style=&quot;width: 49.4186%; margin-right: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rElRG/btsOMO3NKW8/XVGzyLi2CoKjmhAO37G4Qk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrElRG%2FbtsOMO3NKW8%2FXVGzyLi2CoKjmhAO37G4Qk%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;6240&quot; height=&quot;4160&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/S8oyl/btsOL5ZvIgP/bO5PxcKQUYUc2WJuZVaFm1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/S8oyl/btsOL5ZvIgP/bO5PxcKQUYUc2WJuZVaFm1/img.jpg&quot; data-origin-width=&quot;6000&quot; data-origin-height=&quot;4000&quot; data-is-animation=&quot;false&quot; data-filename=&quot;charlesdeluvio-GXNo-OJynTQ-unsplash.jpg&quot; style=&quot;width: 49.4186%;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/S8oyl/btsOL5ZvIgP/bO5PxcKQUYUc2WJuZVaFm1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FS8oyl%2FbtsOL5ZvIgP%2FbO5PxcKQUYUc2WJuZVaFm1%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;6000&quot; height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디자인&lt;span&gt; &lt;/span&gt;시스템은&lt;span&gt; UI &lt;/span&gt;컴포넌트의&lt;span&gt; &lt;/span&gt;설계&lt;span&gt; &lt;/span&gt;기준이&lt;span&gt; &lt;/span&gt;되는&lt;span&gt; &lt;/span&gt;스타일&lt;span&gt; &lt;/span&gt;가이드와&lt;span&gt; &lt;/span&gt;컴포넌트&lt;span&gt; &lt;/span&gt;라이브러리의&lt;span&gt; &lt;/span&gt;총합입니다&lt;span&gt;. &lt;/span&gt;예를&lt;span&gt; &lt;/span&gt;들어&lt;span&gt; Material Design&lt;/span&gt;이나&lt;span&gt; Carbon Design System&lt;/span&gt;은&lt;span&gt; &lt;/span&gt;전&lt;span&gt; &lt;/span&gt;세계적으로&lt;span&gt; &lt;/span&gt;사용되는&lt;span&gt; &lt;/span&gt;대표적인&lt;span&gt; &lt;/span&gt;디자인&lt;span&gt; &lt;/span&gt;시스템입니다&lt;span&gt;. &lt;/span&gt;디자인&lt;span&gt; &lt;/span&gt;시스템이&lt;span&gt; &lt;/span&gt;정비되면&lt;span&gt; &lt;/span&gt;디자이너와&lt;span&gt; &lt;/span&gt;개발자는&lt;span&gt; &lt;/span&gt;동일한&lt;span&gt; &lt;/span&gt;기준&lt;span&gt; &lt;/span&gt;아래에서&lt;span&gt; &lt;/span&gt;컴포넌트를&lt;span&gt; &lt;/span&gt;제작하고&lt;span&gt; &lt;/span&gt;관리할&lt;span&gt; &lt;/span&gt;수&lt;span&gt; &lt;/span&gt;있습니다&lt;span&gt;.&lt;/span&gt;&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;span&gt;3. UI &lt;/span&gt;컴포넌트&lt;span&gt; &lt;/span&gt;설계&lt;span&gt; &lt;/span&gt;시&lt;span&gt; &lt;/span&gt;고려할&lt;span&gt; 5&lt;/span&gt;가지&lt;span&gt; &lt;/span&gt;원칙&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/w04fm/btsOLdxaL9x/zdJUD0Qtel9vSgkX3SmKL1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/w04fm/btsOLdxaL9x/zdJUD0Qtel9vSgkX3SmKL1/img.jpg&quot; data-origin-width=&quot;4021&quot; data-origin-height=&quot;4085&quot; data-is-animation=&quot;false&quot; data-filename=&quot;faizur-rehman-d7h4kZXmHhk-unsplash.jpg&quot; data-widthpercent=&quot;26.23&quot; style=&quot;width: 25.6217%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/w04fm/btsOLdxaL9x/zdJUD0Qtel9vSgkX3SmKL1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fw04fm%2FbtsOLdxaL9x%2FzdJUD0Qtel9vSgkX3SmKL1%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;4021&quot; height=&quot;4085&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rVBf1/btsOKQoBY3p/FZkyBt49Sm78M74lzA1uX0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rVBf1/btsOKQoBY3p/FZkyBt49Sm78M74lzA1uX0/img.jpg&quot; data-origin-width=&quot;6000&quot; data-origin-height=&quot;4000&quot; data-is-animation=&quot;false&quot; data-filename=&quot;maik-jonietz-_yMciiStJyY-unsplash.jpg&quot; style=&quot;width: 39.0443%; margin-right: 10px;&quot; data-widthpercent=&quot;39.97&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rVBf1/btsOKQoBY3p/FZkyBt49Sm78M74lzA1uX0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrVBf1%2FbtsOKQoBY3p%2FFZkyBt49Sm78M74lzA1uX0%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;6000&quot; height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/698NQ/btsOMcYnOoW/PDAorcKBWHTXsSkEmRjA3k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/698NQ/btsOMcYnOoW/PDAorcKBWHTXsSkEmRjA3k/img.jpg&quot; data-origin-width=&quot;3850&quot; data-origin-height=&quot;3036&quot; data-is-animation=&quot;false&quot; data-filename=&quot;eftakher-alam-i1VQZsU86ok-unsplash.jpg&quot; style=&quot;width: 33.0084%;&quot; data-widthpercent=&quot;33.8&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/698NQ/btsOMcYnOoW/PDAorcKBWHTXsSkEmRjA3k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F698NQ%2FbtsOMcYnOoW%2FPDAorcKBWHTXsSkEmRjA3k%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;3850&quot; height=&quot;3036&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;① &lt;span&gt;일관성&lt;/span&gt; (Consistency)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동일한&lt;span&gt; &lt;/span&gt;컴포넌트는&lt;span&gt; &lt;/span&gt;어떤&lt;span&gt; &lt;/span&gt;페이지에서도&lt;span&gt; &lt;/span&gt;동일하게&lt;span&gt; &lt;/span&gt;보이고&lt;span&gt; &lt;/span&gt;작동해야&lt;span&gt; &lt;/span&gt;합니다&lt;span&gt;. &lt;/span&gt;사용자는&lt;span&gt; &lt;/span&gt;반복되는&lt;span&gt; &lt;/span&gt;요소에&lt;span&gt; &lt;/span&gt;익숙함을&lt;span&gt; &lt;/span&gt;느끼고&lt;span&gt;, &lt;/span&gt;이는&lt;span&gt; UX &lt;/span&gt;품질에&lt;span&gt; &lt;/span&gt;직결됩니다&lt;span&gt;.&lt;/span&gt;&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;span&gt;재사용성&lt;/span&gt; (Reusability)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컴포넌트는&lt;span&gt; &lt;/span&gt;하나의&lt;span&gt; &lt;/span&gt;기능을&lt;span&gt; &lt;/span&gt;범용적으로&lt;span&gt; &lt;/span&gt;수행해야&lt;span&gt; &lt;/span&gt;하며&lt;span&gt;, &lt;/span&gt;다양한&lt;span&gt; &lt;/span&gt;맥락에서&lt;span&gt; &lt;/span&gt;쉽게&lt;span&gt; &lt;/span&gt;재사용될&lt;span&gt; &lt;/span&gt;수&lt;span&gt; &lt;/span&gt;있도록&lt;span&gt; &lt;/span&gt;설계되어야&lt;span&gt; &lt;/span&gt;합니다&lt;span&gt;. props&lt;/span&gt;나&lt;span&gt; slot &lt;/span&gt;등으로&lt;span&gt; &lt;/span&gt;유연성을&lt;span&gt; &lt;/span&gt;확보하는&lt;span&gt; &lt;/span&gt;것이&lt;span&gt; &lt;/span&gt;중요합니다&lt;span&gt;.&lt;/span&gt;&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;span&gt;확장성&lt;/span&gt; (Scalability)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기능&lt;span&gt; &lt;/span&gt;추가나&lt;span&gt; &lt;/span&gt;상태&lt;span&gt; &lt;/span&gt;변화가&lt;span&gt; &lt;/span&gt;생겼을&lt;span&gt; &lt;/span&gt;때&lt;span&gt; &lt;/span&gt;구조를&lt;span&gt; &lt;/span&gt;변경하지&lt;span&gt; &lt;/span&gt;않고도&lt;span&gt; &lt;/span&gt;대응할&lt;span&gt; &lt;/span&gt;수&lt;span&gt; &lt;/span&gt;있어야&lt;span&gt; &lt;/span&gt;합니다&lt;span&gt;. CSS &lt;/span&gt;변수&lt;span&gt;, BEM &lt;/span&gt;방식&lt;span&gt;, Atomic Design &lt;/span&gt;접근법이&lt;span&gt; &lt;/span&gt;여기에&lt;span&gt; &lt;/span&gt;도움이&lt;span&gt; &lt;/span&gt;됩니다&lt;span&gt;.&lt;/span&gt;&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;span&gt;접근성&lt;/span&gt; (Accessibility)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시각&lt;span&gt;, &lt;/span&gt;청각&lt;span&gt; &lt;/span&gt;등&lt;span&gt; &lt;/span&gt;다양한&lt;span&gt; &lt;/span&gt;사용자&lt;span&gt; &lt;/span&gt;환경에서도&lt;span&gt; &lt;/span&gt;컴포넌트가&lt;span&gt; &lt;/span&gt;제대로&lt;span&gt; &lt;/span&gt;작동해야&lt;span&gt; &lt;/span&gt;합니다&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예&lt;span&gt;: &lt;/span&gt;스크린&lt;span&gt; &lt;/span&gt;리더를&lt;span&gt; &lt;/span&gt;위한&lt;span&gt; ARIA &lt;/span&gt;속성&lt;span&gt; &lt;/span&gt;적용&lt;span&gt;, &lt;/span&gt;키보드&lt;span&gt; &lt;/span&gt;네비게이션&lt;span&gt; &lt;/span&gt;지원&lt;span&gt; &lt;/span&gt;등&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;span&gt;상태&lt;/span&gt; &lt;span&gt;관리&lt;/span&gt; &lt;span&gt;분리&lt;/span&gt; (State Separation)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컴포넌트&lt;span&gt; &lt;/span&gt;자체와&lt;span&gt; &lt;/span&gt;그&lt;span&gt; &lt;/span&gt;상태는&lt;span&gt; &lt;/span&gt;명확히&lt;span&gt; &lt;/span&gt;분리되어야&lt;span&gt; &lt;/span&gt;합니다&lt;span&gt;. UI &lt;/span&gt;상태는&lt;span&gt; &lt;/span&gt;가능하면&lt;span&gt; &lt;/span&gt;상위&lt;span&gt; &lt;/span&gt;컨테이너에서&lt;span&gt; &lt;/span&gt;관리하고&lt;span&gt;, &lt;/span&gt;컴포넌트는&lt;span&gt; &lt;/span&gt;뷰만&lt;span&gt; &lt;/span&gt;담당하게&lt;span&gt; &lt;/span&gt;해야&lt;span&gt; &lt;/span&gt;유지보수가&lt;span&gt; &lt;/span&gt;용이합니다&lt;span&gt;.&lt;/span&gt;&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;span&gt;4. &lt;/span&gt;실무에서&lt;span&gt; &lt;/span&gt;자주&lt;span&gt; &lt;/span&gt;발생하는&lt;span&gt; &lt;/span&gt;협업&lt;span&gt; &lt;/span&gt;이슈&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디자이너와&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;개발자&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;간의&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;협업에서&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;자주&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;발생하는&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;문제는&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;다음과&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;같습니다&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;:&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAwWx1/btsONCIBdbD/cq9LvXeprtLOovj38r4Fhk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAwWx1/btsONCIBdbD/cq9LvXeprtLOovj38r4Fhk/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;5019&quot; data-origin-height=&quot;3346&quot; data-filename=&quot;safar-safarov-LKsHwgzyk7c-unsplash.jpg&quot; style=&quot;width: 68.4258%; margin-right: 10px;&quot; data-widthpercent=&quot;69.23&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAwWx1/btsONCIBdbD/cq9LvXeprtLOovj38r4Fhk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAwWx1%2FbtsONCIBdbD%2Fcq9LvXeprtLOovj38r4Fhk%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;5019&quot; height=&quot;3346&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byhWLg/btsOMTqt5Ft/FuHS2SI8ZlJilEA2Mz8Duk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byhWLg/btsOMTqt5Ft/FuHS2SI8ZlJilEA2Mz8Duk/img.jpg&quot; data-origin-width=&quot;4000&quot; data-origin-height=&quot;6000&quot; data-is-animation=&quot;false&quot; data-filename=&quot;tai-bui-HzVBe-8frwc-unsplash.jpg&quot; style=&quot;width: 30.4114%;&quot; data-widthpercent=&quot;30.77&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byhWLg/btsOMTqt5Ft/FuHS2SI8ZlJilEA2Mz8Duk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyhWLg%2FbtsOMTqt5Ft%2FFuHS2SI8ZlJilEA2Mz8Duk%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;4000&quot; height=&quot;6000&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YBind/btsOLmmWALv/qvvzWGrBthOldvHr6bc6R1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YBind/btsOLmmWALv/qvvzWGrBthOldvHr6bc6R1/img.jpg&quot; data-origin-width=&quot;6000&quot; data-origin-height=&quot;4000&quot; data-is-animation=&quot;false&quot; data-filename=&quot;disruptivo-iQ15DTx-63k-unsplash.jpg&quot; style=&quot;width: 49.4211%; margin-right: 10px; margin-top: 10px;&quot; data-widthpercent=&quot;50&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YBind/btsOLmmWALv/qvvzWGrBthOldvHr6bc6R1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYBind%2FbtsOLmmWALv%2FqvvzWGrBthOldvHr6bc6R1%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;6000&quot; height=&quot;4000&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tyVBi/btsOMkaQuqU/nSsNoJvYz2K4I8E4a1FML0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tyVBi/btsOMkaQuqU/nSsNoJvYz2K4I8E4a1FML0/img.jpg&quot; data-origin-width=&quot;4939&quot; data-origin-height=&quot;3293&quot; data-is-animation=&quot;false&quot; data-filename=&quot;arpad-czapp-2t6st8T_J3k-unsplash.jpg&quot; data-widthpercent=&quot;50&quot; style=&quot;width: 49.4161%; margin-top: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tyVBi/btsOMkaQuqU/nSsNoJvYz2K4I8E4a1FML0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtyVBi%2FbtsOMkaQuqU%2FnSsNoJvYz2K4I8E4a1FML0%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;4939&quot; height=&quot;3293&quot;/&gt;&lt;/span&gt;&lt;/div&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;디자인에서&lt;span&gt; &lt;/span&gt;정의한&lt;span&gt; &lt;/span&gt;컴포넌트가&lt;span&gt; &lt;/span&gt;개발&lt;span&gt; &lt;/span&gt;시&lt;span&gt; &lt;/span&gt;구현&lt;span&gt; &lt;/span&gt;불가능하거나&lt;span&gt; &lt;/span&gt;비효율적인&lt;span&gt; &lt;/span&gt;경우&lt;/li&gt;
&lt;li&gt;컴포넌트&lt;span&gt; &lt;/span&gt;상태&lt;span&gt; &lt;/span&gt;정의가&lt;span&gt; &lt;/span&gt;불명확하여&lt;span&gt; &lt;/span&gt;불필요한&lt;span&gt; &lt;/span&gt;수정&lt;span&gt; &lt;/span&gt;반복&lt;/li&gt;
&lt;li&gt;각&lt;span&gt; &lt;/span&gt;팀&lt;span&gt; &lt;/span&gt;간&lt;span&gt; &lt;/span&gt;명명&lt;span&gt; &lt;/span&gt;방식이나&lt;span&gt; UI &lt;/span&gt;기준&lt;span&gt; &lt;/span&gt;불일치&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한&lt;span&gt; &lt;/span&gt;문제를&lt;span&gt; &lt;/span&gt;해결하기&lt;span&gt; &lt;/span&gt;위해&lt;span&gt;, &lt;/span&gt;아래와&lt;span&gt; &lt;/span&gt;같은&lt;span&gt; &lt;/span&gt;도구와&lt;span&gt; &lt;/span&gt;방식을&lt;span&gt; &lt;/span&gt;사용할&lt;span&gt; &lt;/span&gt;수&lt;span&gt; &lt;/span&gt;있습니다&lt;span&gt;.&lt;/span&gt;&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;span&gt;5. &lt;/span&gt;협업&lt;span&gt; &lt;/span&gt;효율을&lt;span&gt; &lt;/span&gt;높이는&lt;span&gt; &lt;/span&gt;도구&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cL1e9u/btsOK5Tmk78/jKM42Ps759IBztKoH2WNhK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cL1e9u/btsOK5Tmk78/jKM42Ps759IBztKoH2WNhK/img.jpg&quot; data-origin-width=&quot;6013&quot; data-origin-height=&quot;4011&quot; data-is-animation=&quot;false&quot; data-filename=&quot;zac-wolff-7uSKXpksCKg-unsplash.jpg&quot; style=&quot;width: 29.4597%; margin-right: 10px;&quot; data-widthpercent=&quot;30.16&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cL1e9u/btsOK5Tmk78/jKM42Ps759IBztKoH2WNhK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcL1e9u%2FbtsOK5Tmk78%2FjKM42Ps759IBztKoH2WNhK%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;6013&quot; height=&quot;4011&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l49Hr/btsOM5jWwfl/KdOKrikkcp586MktCdpBY1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l49Hr/btsOM5jWwfl/KdOKrikkcp586MktCdpBY1/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;3840&quot; data-origin-height=&quot;1920&quot; data-filename=&quot;team-nocoloco-YRUj8BENrVQ-unsplash.jpg&quot; data-widthpercent=&quot;40.24&quot; style=&quot;width: 39.3025%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l49Hr/btsOM5jWwfl/KdOKrikkcp586MktCdpBY1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl49Hr%2FbtsOM5jWwfl%2FKdOKrikkcp586MktCdpBY1%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;3840&quot; height=&quot;1920&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1i5TN/btsOLDPM5Qn/zxlkhGe9qhFsXpSHZHzzeK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1i5TN/btsOLDPM5Qn/zxlkhGe9qhFsXpSHZHzzeK/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;4096&quot; data-origin-height=&quot;2784&quot; data-filename=&quot;mariia-shalabaieva-uT7l-Ds81YM-unsplash.jpg&quot; style=&quot;width: 28.9122%;&quot; data-widthpercent=&quot;29.6&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1i5TN/btsOLDPM5Qn/zxlkhGe9qhFsXpSHZHzzeK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1i5TN%2FbtsOLDPM5Qn%2FzxlkhGe9qhFsXpSHZHzzeK%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;4096&quot; height=&quot;2784&quot;/&gt;&lt;/span&gt;&lt;/div&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;span&gt;Figma&lt;/span&gt;는&lt;span&gt; &lt;/span&gt;디자이너가&lt;span&gt; Variants&lt;/span&gt;와&lt;span&gt; Auto Layout&lt;/span&gt;을&lt;span&gt; &lt;/span&gt;활용하여&lt;span&gt; &lt;/span&gt;다양한&lt;span&gt; &lt;/span&gt;컴포넌트&lt;span&gt; &lt;/span&gt;상태를&lt;span&gt; &lt;/span&gt;정의하고&lt;span&gt; &lt;/span&gt;공유할&lt;span&gt; &lt;/span&gt;수&lt;span&gt; &lt;/span&gt;있게&lt;span&gt; &lt;/span&gt;합니다&lt;span&gt;. Storybook&lt;/span&gt;은&lt;span&gt; &lt;/span&gt;개발자가&lt;span&gt; &lt;/span&gt;실제&lt;span&gt; &lt;/span&gt;코드로&lt;span&gt; &lt;/span&gt;만든&lt;span&gt; &lt;/span&gt;컴포넌트를&lt;span&gt; &lt;/span&gt;문서화하고&lt;span&gt; &lt;/span&gt;테스트할&lt;span&gt; &lt;/span&gt;수&lt;span&gt; &lt;/span&gt;있게&lt;span&gt; &lt;/span&gt;하여&lt;span&gt;, &lt;/span&gt;서로의&lt;span&gt; &lt;/span&gt;작업물을&lt;span&gt; &lt;/span&gt;투명하게&lt;span&gt; &lt;/span&gt;공유할&lt;span&gt; &lt;/span&gt;수&lt;span&gt; &lt;/span&gt;있습니다&lt;span&gt;.&lt;/span&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;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0jw9d/btsONxN4tFe/QboGnIwpM3Wc2jYDjeR7qk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0jw9d/btsONxN4tFe/QboGnIwpM3Wc2jYDjeR7qk/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;686&quot; data-origin-height=&quot;386&quot; data-filename=&quot;Zeplin.jpg&quot; style=&quot;width: 49.412%; margin-right: 10px;&quot; data-widthpercent=&quot;49.99&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0jw9d/btsONxN4tFe/QboGnIwpM3Wc2jYDjeR7qk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0jw9d%2FbtsONxN4tFe%2FQboGnIwpM3Wc2jYDjeR7qk%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;686&quot; height=&quot;386&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDWyCD/btsOLPWGhUF/Z52AMlJqZKG14lvBXEDNg0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDWyCD/btsOLPWGhUF/Z52AMlJqZKG14lvBXEDNg0/img.jpg&quot; data-origin-width=&quot;5941&quot; data-origin-height=&quot;3342&quot; data-is-animation=&quot;false&quot; data-filename=&quot;tirza-van-dijk-o1SKqmgSDbg-unsplash.jpg&quot; data-widthpercent=&quot;50.01&quot; style=&quot;width: 49.4252%;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDWyCD/btsOLPWGhUF/Z52AMlJqZKG14lvBXEDNg0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDWyCD%2FbtsOLPWGhUF%2FZ52AMlJqZKG14lvBXEDNg0%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;5941&quot; height=&quot;3342&quot;/&gt;&lt;/span&gt;&lt;/div&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;span&gt;이외에도&lt;/span&gt; Zeroheight, Zeplin, Tokens Studio &lt;span&gt;같은&lt;/span&gt; &lt;span&gt;도구는&lt;/span&gt; &lt;span&gt;디자인&lt;/span&gt;-&lt;span&gt;개발&lt;/span&gt; &lt;span&gt;연결에&lt;/span&gt; &lt;span&gt;효과적입니다&lt;/span&gt;.&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;span&gt;6. &lt;/span&gt;컴포넌트&lt;span&gt; &lt;/span&gt;중심&lt;span&gt; &lt;/span&gt;사고의&lt;span&gt; &lt;/span&gt;필요성&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디자이너와 개발자가 동일한 목표 아래 협업하려면, UI를 단순한 '그림'이 아니라 사용자 경험의 반복 가능한 모듈로 보는 관점이 필요합니다. 컴포넌트&lt;span&gt; &lt;/span&gt;중심의&lt;span&gt; &lt;/span&gt;사고는&lt;span&gt; &lt;/span&gt;유지보수성&lt;span&gt;, &lt;/span&gt;일관성&lt;span&gt;, &lt;/span&gt;확장성을&lt;span&gt; &lt;/span&gt;보장하며&lt;span&gt;, &lt;/span&gt;장기적으로&lt;span&gt; &lt;/span&gt;제품&lt;span&gt; &lt;/span&gt;품질을&lt;span&gt; &lt;/span&gt;크게&lt;span&gt; &lt;/span&gt;향상시킵니다&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;성공적인 UI 협업의 핵심은 '컴포넌트 중심 설계'입니다. 오늘부터 팀 내 디자인 시스템 점검과 컴포넌트 재설계를 시작해보세요&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;</description>
      <category>ui 컴포넌트 설계 시 고려할 5가지 원칙</category>
      <category>ui 컴포넌트 설계 원칙</category>
      <category>디자인 시스템과 컴포넌트의 관계</category>
      <category>실무에서 자주 발생하는 협업 이슈</category>
      <category>컴포넌트 중심 사고</category>
      <category>컴포넌트 중심 설계</category>
      <author>얌얌커비</author>
      <guid isPermaLink="true">https://kirby-dev.tistory.com/19</guid>
      <comments>https://kirby-dev.tistory.com/entry/%EB%94%94%EC%9E%90%EC%9D%B4%EB%84%88%EC%99%80-%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-%ED%95%A8%EA%BB%98-%EC%95%8C%EC%95%84%EC%95%BC-%ED%95%A0-UI-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8-%EC%84%A4%EA%B3%84-%EC%9B%90%EC%B9%99#entry19comment</comments>
      <pubDate>Mon, 23 Jun 2025 01:34:39 +0900</pubDate>
    </item>
    <item>
      <title>카카오, 새 디지털 서체 '카카오 글씨' 제작 및 무료 배포!</title>
      <link>https://kirby-dev.tistory.com/entry/%EC%B9%B4%EC%B9%B4%EC%98%A4-%EC%83%88-%EB%94%94%EC%A7%80%ED%84%B8-%EC%84%9C%EC%B2%B4-%EC%B9%B4%EC%B9%B4%EC%98%A4-%EA%B8%80%EC%94%A8-%EC%A0%9C%EC%9E%91-%EB%B0%8F-%EB%AC%B4%EB%A3%8C-%EB%B0%B0%ED%8F%AC</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;다운로드.webp&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cnT45D/btsOHBQ9L6R/G0Swd8Lk5pkkfsGtZxsUCK/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cnT45D/btsOHBQ9L6R/G0Swd8Lk5pkkfsGtZxsUCK/img.webp&quot; data-alt=&quot;카카오 큰글씨 작은글씨 서체 무료배포&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cnT45D/btsOHBQ9L6R/G0Swd8Lk5pkkfsGtZxsUCK/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcnT45D%2FbtsOHBQ9L6R%2FG0Swd8Lk5pkkfsGtZxsUCK%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;다운로드.webp&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;카카오 큰글씨 작은글씨 서체 무료배포&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;section&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;카카오가 만든 서체? 기대 이상이었다&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최근에 카카오에서 새로운 디지털 서체인 &lt;b&gt;'카카오 글씨'&lt;/b&gt;를 공개했는데, 디자인 쪽 일을 하다 보니 자연스럽게 써보게 됐어요. 평소에도 폰트 수집이 취미 같은 저로서는, 이런 소식이 반가울 수밖에 없죠. 더 반가운 건 이 서체가 &lt;b&gt;개인용은 물론 상업적 용도까지 완전 무료&lt;/b&gt;라는 점이었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치해서 써보니, 생각보다 훨씬 활용도가 높더라고요. 발표 자료, 웹 프로젝트, 심지어 모바일 앱 UI 시안에도 가볍게 어울렸습니다.&lt;/p&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;/section&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1a4eef95019700001.png&quot; data-origin-width=&quot;1633&quot; data-origin-height=&quot;901&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dDZ6XW/btsOFKhLh3q/5cnjrQDHFIlyTWFIMAweR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dDZ6XW/btsOFKhLh3q/5cnjrQDHFIlyTWFIMAweR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dDZ6XW/btsOFKhLh3q/5cnjrQDHFIlyTWFIMAweR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdDZ6XW%2FbtsOFKhLh3q%2F5cnjrQDHFIlyTWFIMAweR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1633&quot; height=&quot;901&quot; data-filename=&quot;1a4eef95019700001.png&quot; data-origin-width=&quot;1633&quot; data-origin-height=&quot;901&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;section&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;'카카오 글씨'의 첫인상과 특징&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫 느낌은 &amp;ldquo;&lt;b&gt;참 카카오답다&lt;/b&gt;&amp;rdquo;였습니다. 딱딱하지 않고, 그렇다고 너무 장난스럽지도 않은 그 절묘한 균형감.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래는 제가 직접 써보며 느낀 주요 특징들이에요&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;부드러운 인상:&lt;/b&gt; 둥글둥글한 획이 친근한 분위기를 잘 살려줘요.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;가독성 좋음:&lt;/b&gt; 디지털 디바이스에서 눈에 잘 들어옵니다. 웹 콘텐츠에도 잘 어울려요.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;두 가지 굵기:&lt;/b&gt; Regular와 Bold 버전이 제공되어, 콘텐츠 계층을 나누기 좋아요.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;제약 없는 라이선스:&lt;/b&gt; 기업 로고, 유튜브 썸네일, 광고 배너 등 다양한 상업적 작업에 바로 쓸 수 있어요.&lt;/li&gt;
&lt;/ul&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;/section&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ceOHv3/btsOF4mMoX6/pO76xOvN0LR55CF8LTqDX1/img.webp&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ceOHv3/btsOF4mMoX6/pO76xOvN0LR55CF8LTqDX1/img.webp&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;1000&quot; data-origin-height=&quot;562&quot; data-filename=&quot;N1_DKSuVEnTWf7J5e3ybDkAJrhEEIGjm8JlGWKvq5qwof18XE-RsIgQpNbG6d-qrkJ53T390tvSQw-evR29Sow.webp&quot; style=&quot;width: 31.2983%; margin-right: 10px;&quot; data-widthpercent=&quot;32.04&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ceOHv3/btsOF4mMoX6/pO76xOvN0LR55CF8LTqDX1/img.webp&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FceOHv3%2FbtsOF4mMoX6%2FpO76xOvN0LR55CF8LTqDX1%2Fimg.webp&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1000&quot; height=&quot;562&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b38DHN/btsOIZX3JsY/hm3uRV4jQjnJ2n7KZSPEK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b38DHN/btsOIZX3JsY/hm3uRV4jQjnJ2n7KZSPEK0/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;530&quot; data-filename=&quot;1478964_672137_3954.png&quot; data-widthpercent=&quot;31.94&quot; style=&quot;width: 31.1968%; margin-right: 10px;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b38DHN/btsOIZX3JsY/hm3uRV4jQjnJ2n7KZSPEK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb38DHN%2FbtsOIZX3JsY%2Fhm3uRV4jQjnJ2n7KZSPEK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;940&quot; height=&quot;530&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YnMGP/btsOGVCSOAr/XjRSMqT93zNYdU3K9CmCzK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YnMGP/btsOGVCSOAr/XjRSMqT93zNYdU3K9CmCzK/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;400&quot; data-filename=&quot;a85d0594017900001.jpg&quot; style=&quot;width: 35.1793%;&quot; data-widthpercent=&quot;36.02&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YnMGP/btsOGVCSOAr/XjRSMqT93zNYdU3K9CmCzK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYnMGP%2FbtsOGVCSOAr%2FXjRSMqT93zNYdU3K9CmCzK%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;800&quot; height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;section&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;사용 조건 &amp;amp; 라이선스&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;카카오는 '카카오 글씨'를 &lt;b&gt;비영리&amp;middot;영리 모두 무료로 사용 가능&lt;/b&gt;한 오픈 라이선스로 제공하고 있어요. 다만, &lt;b&gt;폰트를 수정하거나 재판매하는 건 금지&lt;/b&gt;되어 있으니 주의가 필요합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;깃허브나 폰트 공유 사이트를 통해 유통되는 비공식 버전도 있던데, 가능하면 &lt;b&gt;공식 경로에서 받는 걸 추천&lt;/b&gt;드려요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/section&gt;
&lt;section&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;카카오 글씨 다운로드 방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 링크에서 &lt;b&gt;카카오 글씨 공식 다운로드 페이지&lt;/b&gt;로 바로 이동할 수 있어요. TTF 형식으로 제공되며, 윈도우나 맥 어디서든 설치 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;  공식 다운로드 링크:&lt;/b&gt;&lt;br /&gt;&lt;a href=&quot;https://www.kakaocorp.com/page/detail/11570&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.kakaocorp.com/page/detail/11570&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 방법이나 사용 예시도 페이지 내에서 친절하게 안내하고 있어서 어렵지 않아요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/section&gt;
&lt;section&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;포트폴리오에도 어울리는 서체&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;포트폴리오 블로그나 개인 웹사이트를 운영하는 분이라면, &lt;b&gt;'카카오 글씨'는 진심 추천할 만한 서체&lt;/b&gt;입니다. 저는 이 서체로 프로젝트 소개 페이지를 구성해봤는데, 좀 더 부드럽고 편안한 인상을 줄 수 있었어요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;콘텐츠의 분위기를 너무 무겁게 만들지 않으면서도, 정보 전달에는 전혀 문제가 없는 폰트는 흔치 않거든요. 게다가 카카오라는 이름이 주는 신뢰감도 분명한 장점이죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혹시 지금 작업 중인 웹/앱 디자인에 어울릴 만한 &lt;b&gt;깔끔하면서 개성 있는 무료 서체&lt;/b&gt;를 찾고 계신다면, 한 번 설치해서 써보시길 추천드립니다. 사용해보고 나면 생각보다 자주 쓰게 될지도 몰라요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/section&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이&amp;nbsp;글은&amp;nbsp;개인적인&amp;nbsp;사용&amp;nbsp;경험과&amp;nbsp;카카오&amp;nbsp;공식&amp;nbsp;자료를&amp;nbsp;기반으로&amp;nbsp;작성되었습니다.&lt;/p&gt;</description>
      <category>대기업 폰트</category>
      <category>디지털 서체 출시</category>
      <category>카카오</category>
      <category>카카오 디지털서체</category>
      <category>카카오글씨</category>
      <category>카카오작은글씨</category>
      <category>카카오큰글씨</category>
      <category>카카오폰트무료배포</category>
      <category>폰트출시</category>
      <author>얌얌커비</author>
      <guid isPermaLink="true">https://kirby-dev.tistory.com/18</guid>
      <comments>https://kirby-dev.tistory.com/entry/%EC%B9%B4%EC%B9%B4%EC%98%A4-%EC%83%88-%EB%94%94%EC%A7%80%ED%84%B8-%EC%84%9C%EC%B2%B4-%EC%B9%B4%EC%B9%B4%EC%98%A4-%EA%B8%80%EC%94%A8-%EC%A0%9C%EC%9E%91-%EB%B0%8F-%EB%AC%B4%EB%A3%8C-%EB%B0%B0%ED%8F%AC#entry18comment</comments>
      <pubDate>Thu, 19 Jun 2025 11:22:59 +0900</pubDate>
    </item>
    <item>
      <title>Ferralax Scrolling이란? 웹사이트에 생명을 불어넣는 Parallax 스크롤링 기술</title>
      <link>https://kirby-dev.tistory.com/entry/Ferralax-Scrolling%EC%9D%B4%EB%9E%80-%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8%EC%97%90-%EC%83%9D%EB%AA%85%EC%9D%84-%EB%B6%88%EC%96%B4%EB%84%A3%EB%8A%94-Parallax-%EC%8A%A4%ED%81%AC%EB%A1%A4%EB%A7%81-%EA%B8%B0%EC%88%A0</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Ferralax Scrolling.png&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;1200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7E7uR/btsNQqv9FXr/3t7NrAKoAM9kkOyi1rcO50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7E7uR/btsNQqv9FXr/3t7NrAKoAM9kkOyi1rcO50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7E7uR/btsNQqv9FXr/3t7NrAKoAM9kkOyi1rcO50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7E7uR%2FbtsNQqv9FXr%2F3t7NrAKoAM9kkOyi1rcO50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1200&quot; height=&quot;1200&quot; data-filename=&quot;Ferralax Scrolling.png&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;1200&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Ferralax Scrolling 개요&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹사이트의 사용자 경험(UX)을 극대화하기 위해 많은 개발자와 디자이너들이 다양한 스크롤링 효과를 사용하고 있습니다. 그 중에 패럴랙스 스크롤링은 시각적 몰입감을 극대화해주는 Parallax 효과의 고급 구현체로 프론트엔드 개발 트렌드에서 점점 더 주목받고 있습니다.&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;Ferralax(패럴랙스)란?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ferralax는 React(리액트) 기반의 Parallax Scrolling 컴포넌트를 쉽게 구현할 수 있도록 도와주는 라이브러리 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;framer-motion, react-scroll, intersection observer 등을 활용하여 배경과 콘텐츠를 다른 속도로 움직이게 하여 &lt;b&gt;3D처럼 보이는 스크롤 인터랙션&lt;/b&gt;을 연출할 수 있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;주요 기능 및 장점&lt;/b&gt;&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style8&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;기능&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;부드러운 스크롤 애니메이션&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;사용자의 스크롤에 반응하는 자연스러운 움직임&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;고성능 렌더링 지원&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;Intersection Observer API 기반으로 렌더링 최적화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;커스터마이징 용이&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;다양한 속도, 방향, 트리거 지점 설정 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;React 및 Next.js 지원&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;SSR 환경에서도 안정적 동작&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한 가지 팁이 있다면 퍼포먼스를 위해 중요한 콘텐츠는 lazy loading 과 함께 사용하는 것이 좋습니다. lazy loading에 대한 내용은 다음번에 자세하게 다뤄보도록 할게요!&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;Ferralax Scrolling(패럴랙스 스크롤링) 사용법&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 설치 방법&lt;/h3&gt;
&lt;pre id=&quot;code_1746703502494&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm install ferralax&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혹은&lt;/p&gt;
&lt;pre id=&quot;code_1746703530004&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;yarn add ferralax&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;를 터미널 또는 파워쉘에 입력해서 다운로드 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 기본 사용 예시 (React)&lt;/h3&gt;
&lt;pre id=&quot;code_1746703789564&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import {Ferralax} from 'ferralax';

export defalt function HeroSection() {
	return (
    	&amp;lt;Ferralax speed={-0.5}&amp;gt;
        	&amp;lt;img src=&quot;/images/background.webp&quot; alt=&quot;Background&quot;&amp;gt;
        &amp;lt;/Ferralax&amp;gt;
    );
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;팁이 하나 있다면 &lt;b&gt;speed의 값은 -1 ~ 1 사이로 조절&lt;/b&gt;할 수 있고 &lt;b&gt;음수의 경우 역방향으로 스크롤&lt;/b&gt; 되는 점 꼭 참고하세요!&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kz7fd/btsNQaN7C01/kURD6BTj0ZXlyFFpYQ4TR0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kz7fd/btsNQaN7C01/kURD6BTj0ZXlyFFpYQ4TR0/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;7360&quot; data-origin-height=&quot;4912&quot; data-filename=&quot;gabriel-garcia-marengo-JdhU-uYNYGw-unsplash.jpg&quot; style=&quot;width: 30.6489%; margin-right: 10px;&quot; data-widthpercent=&quot;31.38&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kz7fd/btsNQaN7C01/kURD6BTj0ZXlyFFpYQ4TR0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fkz7fd%2FbtsNQaN7C01%2FkURD6BTj0ZXlyFFpYQ4TR0%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;7360&quot; height=&quot;4912&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SKV3v/btsNPh7WFwl/srVkMVcuirmMDuKZ3qPFX1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SKV3v/btsNPh7WFwl/srVkMVcuirmMDuKZ3qPFX1/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;6240&quot; data-origin-height=&quot;3512&quot; data-filename=&quot;jay-zhang-cA73IhQ4VFk-unsplash.jpg&quot; style=&quot;width: 36.3434%; margin-right: 10px;&quot; data-widthpercent=&quot;37.21&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SKV3v/btsNPh7WFwl/srVkMVcuirmMDuKZ3qPFX1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSKV3v%2FbtsNPh7WFwl%2FsrVkMVcuirmMDuKZ3qPFX1%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;6240&quot; height=&quot;3512&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cXBmoA/btsNOLBMQUI/4EQoNtpvspTTo5wb1OX7FK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cXBmoA/btsNOLBMQUI/4EQoNtpvspTTo5wb1OX7FK/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;4896&quot; data-origin-height=&quot;3264&quot; data-filename=&quot;krystof-zajicek-excaiobFeHQ-unsplash.jpg&quot; style=&quot;width: 30.6822%;&quot; data-widthpercent=&quot;31.41&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cXBmoA/btsNOLBMQUI/4EQoNtpvspTTo5wb1OX7FK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcXBmoA%2FbtsNOLBMQUI%2F4EQoNtpvspTTo5wb1OX7FK%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;4896&quot; height=&quot;3264&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;Ferralax Scrolling&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;SEO 측면에서의 Ferralax(패럴랙스) 고려사항&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Parallax 효과는 사용자 경험을 향상시켜줄 수 있지만, 잘못 구현하면 SEO에 부정적인 영향을 줄 수 있습니다.&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;접근성과 SEO를 위한 팁&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;텍스트는 HTML로 렌더링 : 이미지나 애니메이션만 있는 섹션은 Google이 내용을 파악하기 어려워요.&lt;/li&gt;
&lt;li&gt;aria-label, alt 태그를 철저히 기입 : 웹접근성을 높여줄 수록 SEO에 효율적입니다! 의미 없는 태그로 남겨두지 말고 aria-label를 꼭 입력하세요!&lt;/li&gt;
&lt;li&gt;모바일 최적화 : CSS 속성에 따라 모바일에서 Parallax 효과가 깨질 수 있으므로 테스트 필수&lt;/li&gt;
&lt;li&gt;구조화 데이터 (Schema.org) : 주요 콘텐츠는 마크업 구조화로 검색 엔진 이해도 향상&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;팁이 있다면 Lighthouse(Chrome DevTools 내장도구)를 활용해 렌더링 및 접근성 문제를 체크해보는 것도 추천합니다! (이건 함께 일하던 마케터에게 배운 부분이라 더욱 더 확실합니다!)&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;Ferralax Scrolling이 적합한 경우&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;포트폴리오 웹사이트&lt;/li&gt;
&lt;li&gt;브랜드 랜딩 페이지&lt;/li&gt;
&lt;li&gt;비주얼 중심의 제품 소개 페이지&lt;/li&gt;
&lt;li&gt;크리에이티브 에이전시 웹사이트&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ferralax Scrolling은 시각적 스토리텔링을 강화하면서도 사용자의 몰입도를 높이는데 큰 효과가 있는 기능입니다. 다만, SEO 최적화를 병행하는 것이 핵심이고 개발과 ㄷ이자인의 균형을 유지하면서 효과적으로 활용해보세요!&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>ferralax scrolling</category>
      <category>Parallax</category>
      <category>패럴랙스</category>
      <category>패럴랙스 스크롤링</category>
      <author>얌얌커비</author>
      <guid isPermaLink="true">https://kirby-dev.tistory.com/17</guid>
      <comments>https://kirby-dev.tistory.com/entry/Ferralax-Scrolling%EC%9D%B4%EB%9E%80-%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8%EC%97%90-%EC%83%9D%EB%AA%85%EC%9D%84-%EB%B6%88%EC%96%B4%EB%84%A3%EB%8A%94-Parallax-%EC%8A%A4%ED%81%AC%EB%A1%A4%EB%A7%81-%EA%B8%B0%EC%88%A0#entry17comment</comments>
      <pubDate>Thu, 8 May 2025 21:56:35 +0900</pubDate>
    </item>
    <item>
      <title>프로세스 스케줄링, 당신의 컴퓨터는 어떻게 일할까?</title>
      <link>https://kirby-dev.tistory.com/entry/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81-%EB%8B%B9%EC%8B%A0%EC%9D%98-%EC%BB%B4%ED%93%A8%ED%84%B0%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%9D%BC%ED%95%A0%EA%B9%8C</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;컴퓨터는 동시에 수많은 프로그램을 실행합니다. 하지만 CPU는 한 번에 하나의 작업만 처리할 수 있죠.&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;계획.jpeg&quot; data-origin-width=&quot;1079&quot; data-origin-height=&quot;1064&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYrGvo/btsMhNAbvuO/InAQ5lHSGWGOvxqc1h0DcK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYrGvo/btsMhNAbvuO/InAQ5lHSGWGOvxqc1h0DcK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYrGvo/btsMhNAbvuO/InAQ5lHSGWGOvxqc1h0DcK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYrGvo%2FbtsMhNAbvuO%2FInAQ5lHSGWGOvxqc1h0DcK%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;1079&quot; height=&quot;1064&quot; data-filename=&quot;계획.jpeg&quot; data-origin-width=&quot;1079&quot; data-origin-height=&quot;1064&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그것은 바로 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;프로세스 스케줄링&lt;/b&gt;&lt;/span&gt;(Process Scheduling) 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번에는 운영체제가 프로세스를 어떻게 스케줄링하는지, 어떠한 방식들이 있는지, 각 기법들의 장단점을 알아볼게요!&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;먼저, 프로세스 스케줄링이란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로세스 스케줄링은 운영체제가 CPU를 다양한 프로세스에 적절하게 할당하는 방법을 의미합니다. CPU 스케줄러가 이를 담당하며 효율적인 스케줄링을 통해 시스템의 성능을 극대화할 수 있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;  프로세스 스케줄링 이해하는 팁!&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;스케줄링이 없다면 한 프로그램이 CPU를 독적하며 다른 프로그램이 실행되지 못하는 상황이 발생할 수 있어요&lt;/li&gt;
&lt;li&gt;적절한 스케줄링 기법을 선택하면 시스템의 응답속도와 처리량, 공정성이 개선돼요&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;프로세스 스케줄링의 종류&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;운영체제에서 사용하는 프로세스 스케줄링은 크게 3가지로 나눌 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;장기 스케줄링 (Long-term)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;어떤 프로세스를 메모리에 올릴지 결정 (Job Scheduler)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;중기 스케줄링 (Medium-term)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실행중인 프로세스를 일시 중단하거나 다시 실행 (Swapper)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;단기 스케줄링 (Short-term)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;어떤 프로세스가 CPU를 사용할지 결정 (CPU Scheduler)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  스케줄링 종류 쉽게 이해하는 팁!&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;장기 스케줄링&lt;/b&gt; : &quot;어떤 프로그램을 실행할까?&quot;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;중기 스케줄링&lt;/b&gt; : &quot;잠시 대기하거나 다시 실행할까?&quot;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;단기 스케줄링&lt;/b&gt; : &quot;지금 당장 CPU를 누가 사용할까?&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 운영체제는 단계별로 프로세스를 관리합니다  &lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;프로세스 스케줄링 알고리즘&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CPU 스케줄러가 프로세스를 효율적으로 배분하는데 사용되는 다양한 기법이 있습니다.&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;1️⃣ 선점형(Preemptive) 스케줄링&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CPU를 사용하던 프로세스가 중간에 다른 프로세스에게 CPU를 양보해야하는 방식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;(ex. 라운드 로빈) / 선점형 방식은 다중 사용자 환경에서 유용하지만, 문맥 전환(컨텍스트 스위칭) 비용이 발생할 수 있어요!&lt;/span&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;2️⃣ 비선점형 스케줄링&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로세스가 CPU를 할당받으면 끝날 때까지 실행되는 방식&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #9d9d9d; text-align: start;&quot;&gt;(ex.&lt;span&gt; FCFS) / 비선점형 방식은 처리 순서를 예측하기 쉽지만, 실행 시간이 긴 프로세스가 있으면 대기 시간이 길어질 수 있어요!&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #9d9d9d; text-align: start;&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&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;span style=&quot;color: #000000; text-align: start;&quot;&gt;3️⃣ 대표적인 CPU 스케줄링 알고리즘&lt;/span&gt;&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 104px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px; text-align: center;&quot;&gt;알고리즘&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px; text-align: center;&quot;&gt;방식&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px; text-align: center;&quot;&gt;특징&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;FCFS&lt;br /&gt;(First Come, First Served)&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;비선점형&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;먼저 도착한 프로세스부터 실행&lt;br /&gt;(줄 서기 방식)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;SJF&lt;br /&gt;(Shortest Job First)&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;비선점형 / 선점형&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;실행 시간이 짧은 프로세스부터 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;Priority Scheduling&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;선점형 / 비선점형&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;우선순위가 높은 프로세스부터 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;Round Robin&lt;br /&gt;(RR)&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;선점형&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;프로세스마다&lt;br /&gt;일정 시간(CPU 타임 슬라이스)를 할당&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;Multilevel Queue&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;혼합형&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px; text-align: center;&quot;&gt;여러 개의 우선순위 큐를 사용하여&lt;br /&gt;프로세스 그룹화&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FCFS는 단순하지만 Convoy Effect(호위 효과) 문제로 인해 단점이 있고 SJF는 평균 대기 시간을 줄이지만, 실행 시간을 예측하기 어려워요. 라운드 로빈은 공정하지만, 타임 슬라이스가 너무 크면 FCFS와 비슷해지고 너무 작으면 문맥 전환 비용이 증가합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;그럼 어떤 스케줄링이 가장 좋을까?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 질문에 대한 정답은 없습니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 기법은 특정 상황에서 장점과 단점이 있기에 운영체제는 보통 여러가지 스케줄링 알고리즘을 조합하여 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;빠른 반응 속도가 필요하다면? ➡️ &lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;라운드 로빈(RR)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실행 시간 짧은 작업을 우선 처리해야한다면? ➡️ &lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;SJF&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중요한 작업을 먼저 처리한다면? ➡️ &lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;Priority Scheduling&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순한 구조가 필요하다면? ➡️ &lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;FCFS&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최신 운영체제들은 다단계 피드백 큐와 같은 하이브리드 기법을 사용하여 여러가지 알고리즘의 장점을 조합합니다!  &lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;운영체제의 숨은 영웅, 프로세스 스케줄러&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CPU 스케줄링은 우리가 사용하는 컴퓨터와 스마트폰에서 보이지 않게 동작하는 필수적인 요소입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최적의 성능을 위해 다양한 기법들이 활용되며 운영체제의 성능을 결정짓는 중요한 요소 중 하나입니다.&lt;/p&gt;</description>
      <category>CPU 스케줄러</category>
      <category>스케줄러</category>
      <category>스케줄링</category>
      <category>스케줄링 기법</category>
      <category>시스템 성능</category>
      <category>운영체제</category>
      <category>프로세스</category>
      <category>프로세스 스케줄링</category>
      <author>얌얌커비</author>
      <guid isPermaLink="true">https://kirby-dev.tistory.com/16</guid>
      <comments>https://kirby-dev.tistory.com/entry/%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4-%EC%8A%A4%EC%BC%80%EC%A4%84%EB%A7%81-%EB%8B%B9%EC%8B%A0%EC%9D%98-%EC%BB%B4%ED%93%A8%ED%84%B0%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%9D%BC%ED%95%A0%EA%B9%8C#entry16comment</comments>
      <pubDate>Thu, 13 Feb 2025 20:33:11 +0900</pubDate>
    </item>
    <item>
      <title>JavaScript로 다크모드(Dark Mode) 쉽게 구현하는 방법</title>
      <link>https://kirby-dev.tistory.com/entry/JavaScript%EB%A1%9C-%EB%8B%A4%ED%81%AC%EB%AA%A8%EB%93%9CDark-Mode-%EC%89%BD%EA%B2%8C-%EA%B5%AC%ED%98%84%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;다크모드가 필요한 이유&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;눈의 피로 감소 : 어두운 화면은 장시간 사용 시, 밝은화면에 비해 눈이 덜 피곤함&lt;/li&gt;
&lt;li&gt;배터리 절약 : OLED 디스플레이에서는 검은색 픽셀이 전력 소모를 줄임&lt;/li&gt;
&lt;li&gt;개인화된 사용자 경험 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;다크모드 적용 방법&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;다크모드.jpg&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;627&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cLMcne/btsMcx5NNAA/ilNm2oKj7IKY4I8Wmy9nV1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cLMcne/btsMcx5NNAA/ilNm2oKj7IKY4I8Wmy9nV1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cLMcne/btsMcx5NNAA/ilNm2oKj7IKY4I8Wmy9nV1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcLMcne%2FbtsMcx5NNAA%2FilNm2oKj7IKY4I8Wmy9nV1%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;1200&quot; height=&quot;627&quot; data-filename=&quot;다크모드.jpg&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;627&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1️⃣ CSS 변수 (Custom Properties) 활용&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CSS 변수를 사용하면 테마 변경이 매우 간단해집니다.&lt;/p&gt;
&lt;pre id=&quot;code_1739197564067&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;:root {
  --bg-color: #ffffff;
  --text-color: #333333;
}

.dark-mode {
  --bg-color: #222222;
  --text-color: #ffffff;
}

body {
  background-color: var(--bg-color);
  color: var(--text-color);
  transition: background-color 0.3s, color 0.3s;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2️⃣ JavaScript로 다크모드 토글 기능 구현&lt;/h3&gt;
&lt;pre id=&quot;code_1739197603120&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const toggleButton = document.querySelector(&quot;#darkModeToggle&quot;);

toggleButton.addEventListener(&quot;click&quot;, () =&amp;gt; {
  document.body.classList.toggle(&quot;dark-mode&quot;);

  // 사용자 설정을 localStorage에 저장
  if (document.body.classList.contains(&quot;dark-mode&quot;)) {
    localStorage.setItem(&quot;theme&quot;, &quot;dark&quot;);
  } else {
    localStorage.setItem(&quot;theme&quot;, &quot;light&quot;);
  }
});

// 페이지 로드 시 저장된 테마 적용
window.onload = () =&amp;gt; {
  if (localStorage.getItem(&quot;theme&quot;) === &quot;dark&quot;) {
    document.body.classList.add(&quot;dark-mode&quot;);
  }
};&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3️⃣ HTML 버튼 추가&lt;/h3&gt;
&lt;pre id=&quot;code_1739197634701&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;button id=&quot;darkModeToggle&quot;&amp;gt;  다크모드 전환&amp;lt;/button&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4️⃣ 사용자의 시스템 설정에 따라 자동 적용&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CSS prefers-color-scheme 를 활용하면 사용자의 운영체제에 따라 다크모드 설정을 반영할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1739197691567&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@media (prefers-color-scheme: dark) {
  :root {
    --bg-color: #222222;
    --text-color: #ffffff;
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 간단하고 손쉽게 다크모드를 적용해보세요!&lt;/p&gt;</description>
      <category>CSS</category>
      <category>Dark Mode</category>
      <category>JavaScript</category>
      <category>다크모드</category>
      <category>스타일</category>
      <category>자바스크립트</category>
      <author>얌얌커비</author>
      <guid isPermaLink="true">https://kirby-dev.tistory.com/15</guid>
      <comments>https://kirby-dev.tistory.com/entry/JavaScript%EB%A1%9C-%EB%8B%A4%ED%81%AC%EB%AA%A8%EB%93%9CDark-Mode-%EC%89%BD%EA%B2%8C-%EA%B5%AC%ED%98%84%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95#entry15comment</comments>
      <pubDate>Wed, 12 Feb 2025 21:37:45 +0900</pubDate>
    </item>
    <item>
      <title>CSS Grid vs Flexbox 언제 무엇을 사용하는게 좋을까?</title>
      <link>https://kirby-dev.tistory.com/entry/CSS-Grid-vs-Flexbox-%EC%96%B8%EC%A0%9C-%EB%AC%B4%EC%97%87%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%EA%B2%8C-%EC%A2%8B%EC%9D%84%EA%B9%8C</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;고민 짤.gif&quot; data-origin-width=&quot;420&quot; data-origin-height=&quot;307&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YMcae/btsMecTHzI2/JadK7WTZKhDSIfWMrECBKK/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YMcae/btsMecTHzI2/JadK7WTZKhDSIfWMrECBKK/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YMcae/btsMecTHzI2/JadK7WTZKhDSIfWMrECBKK/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/YMcae/btsMecTHzI2/JadK7WTZKhDSIfWMrECBKK/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;420&quot; height=&quot;307&quot; data-filename=&quot;고민 짤.gif&quot; data-origin-width=&quot;420&quot; data-origin-height=&quot;307&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ Grid 와 Flexbox의 차이를 알아보자!&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 19.031%;&quot;&gt;비교&lt;/td&gt;
&lt;td style=&quot;width: 37.9844%;&quot;&gt;Grid&lt;/td&gt;
&lt;td style=&quot;width: 42.9845%;&quot;&gt;Flexbox&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 19.031%;&quot;&gt;레이아웃 유형&lt;/td&gt;
&lt;td style=&quot;width: 37.9844%;&quot;&gt;2차원 (행 + 열)&lt;/td&gt;
&lt;td style=&quot;width: 42.9845%;&quot;&gt;1차원 (행 또는 열)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 19.031%;&quot;&gt;주로 사용하는 경우&lt;/td&gt;
&lt;td style=&quot;width: 37.9844%;&quot;&gt;전체 페이지 /&amp;nbsp; 큰 구조&lt;/td&gt;
&lt;td style=&quot;width: 42.9845%;&quot;&gt;작은 UI 요소 정렬&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 19.031%;&quot;&gt;배열 방식&lt;/td&gt;
&lt;td style=&quot;width: 37.9844%;&quot;&gt;grid-template-rows&lt;br /&gt;grid-template-columns&lt;/td&gt;
&lt;td style=&quot;width: 42.9845%;&quot;&gt;flex-direction 으로 한 방향 정렬&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 19.031%;&quot;&gt;정렬 방식&lt;/td&gt;
&lt;td style=&quot;width: 37.9844%;&quot;&gt;justify-items&lt;br /&gt;align-items&lt;/td&gt;
&lt;td style=&quot;width: 42.9845%;&quot;&gt;&lt;span style=&quot;background-color: #f9f9f9; color: #333333; text-align: start;&quot;&gt;justify-items&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f9f9f9; color: #333333; text-align: start;&quot;&gt;align-items&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;❓ 언제 Grid를 사용해야할까?&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;전체 페이지 레이아웃을 구성할 때&lt;/li&gt;
&lt;li&gt;복잡한 카드 UI 레이아웃을 짤 때&lt;/li&gt;
&lt;li&gt;행(row)과 열(column)을 동시에 정렬해야할 때&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Grid를 적용한 예제코드&lt;/h3&gt;
&lt;pre id=&quot;code_1739198102525&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;grid-container&quot;&amp;gt;
  &amp;lt;div class=&quot;grid-item&quot;&amp;gt;1&amp;lt;/div&amp;gt;
  &amp;lt;div class=&quot;grid-item&quot;&amp;gt;2&amp;lt;/div&amp;gt;
  &amp;lt;div class=&quot;grid-item&quot;&amp;gt;3&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1739198068873&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;.grid-container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}

.grid-item {
  background-color: lightblue;
  padding: 20px;
  text-align: center;
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;❓ 언제 Flexbox를 사용해야할까?&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;버튼 그룹, 네비게이션 바처럼 한 줄 정렬이 필요할 때&lt;/li&gt;
&lt;li&gt;콘텐츠를 가운데 정렬해야할 때&lt;/li&gt;
&lt;li&gt;동적으로 크기가 변하는 요소들을 정렬할 때&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;Flexbox를 적용한 예제코드&lt;/h3&gt;
&lt;pre id=&quot;code_1739198215233&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;flex-container&quot;&amp;gt;
  &amp;lt;div class=&quot;flex-item&quot;&amp;gt;Flexbox&amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1739198226532&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;.flex-container {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
}

.flex-item {
  padding: 20px;
  background-color: coral;
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;Grid와 Flexbox 선택 기준 (기능별 추천 CSS)&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;기능&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;추천&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;전체적인 페이지 레이아웃&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;Grid&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;수평 정렬이 필요한 경우&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;Flexbox&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;행과 열을 동시에 정렬&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;Grid&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;작은 UI 요소 간의 정렬&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;span style=&quot;background-color: #f9f9f9; color: #333333; text-align: start;&quot;&gt;Flexbox&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사실 Grid와 Flexbox를 혼합해 사용하면 더욱 탄탄하게 퍼블리싱할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;필요한 상황에 따라 적절하게 활용해보세요!&lt;/p&gt;</description>
      <category>CSS</category>
      <category>CSS STYLE</category>
      <category>flex</category>
      <category>Flexbox</category>
      <category>Grid</category>
      <category>반응형웹</category>
      <category>스타일</category>
      <author>얌얌커비</author>
      <guid isPermaLink="true">https://kirby-dev.tistory.com/14</guid>
      <comments>https://kirby-dev.tistory.com/entry/CSS-Grid-vs-Flexbox-%EC%96%B8%EC%A0%9C-%EB%AC%B4%EC%97%87%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%EA%B2%8C-%EC%A2%8B%EC%9D%84%EA%B9%8C#entry14comment</comments>
      <pubDate>Tue, 11 Feb 2025 20:59:45 +0900</pubDate>
    </item>
    <item>
      <title>웹 성능 최적화를 위한 필수 체크 리스트!</title>
      <link>https://kirby-dev.tistory.com/entry/%EC%9B%B9-%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EB%A5%BC-%EC%9C%84%ED%95%9C-%ED%95%84%EC%88%98-%EC%B2%B4%ED%81%AC-%EB%A6%AC%EC%8A%A4%ED%8A%B8</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;웹 성능이 중요한 이유&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹사이트의 로딩 속도는 사용자 경험(UX), 검색엔진최적화(SEO), 전환율(Conversion Rate)에 큰 영향을 미칩니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;UX&lt;/b&gt; : 3초 이상 소요시 사용자의 50%사 이탈함&lt;/li&gt;
&lt;li&gt;&lt;b&gt;SEO&lt;/b&gt; : Google은 속도가 빠른 웹사이트를 더 높은 순위에 배치함&lt;/li&gt;
&lt;li&gt;&lt;b&gt;전환율&lt;/b&gt; : 로딩 시간이 1초 증가할 때마다 전환율이 7% 감소함&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹 성능을 최적화하려면 &lt;b&gt;불필요한 리소스를 줄이고 효율적인 코드와 설정&lt;/b&gt;을 적용해야합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자, 이제 체크리스트를 따라가며 최적화하는 방법을 살펴볼까요?&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;웹 성능 최적화 체크리스트&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;체크리스트.jpeg&quot; data-origin-width=&quot;259&quot; data-origin-height=&quot;194&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d3mHdi/btsMeyWpe5G/ynYQRNqQqOdDaPNJKpzlpK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d3mHdi/btsMeyWpe5G/ynYQRNqQqOdDaPNJKpzlpK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d3mHdi/btsMeyWpe5G/ynYQRNqQqOdDaPNJKpzlpK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd3mHdi%2FbtsMeyWpe5G%2FynYQRNqQqOdDaPNJKpzlpK%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;259&quot; height=&quot;194&quot; data-filename=&quot;체크리스트.jpeg&quot; data-origin-width=&quot;259&quot; data-origin-height=&quot;194&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1️⃣ 이미지 최적화 : 페이지 속도를 높이는 핵심 요소&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;차세대 이미지 포맷(WEBP, AVIF) 사용&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기존 PNG, JPEG 보다 용량이 25~50% 작기 때문&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1739196163838&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;picture&amp;gt;
  &amp;lt;source srcset=&quot;image.avif&quot; type=&quot;image/avif&quot;&amp;gt;
  &amp;lt;source srcset=&quot;image.webp&quot; type=&quot;image/webp&quot;&amp;gt;
  &amp;lt;img src=&quot;image.jpg&quot; alt=&quot;이미지 설명&quot;&amp;gt;
&amp;lt;/picture&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;반응형 이미지 적용&lt;/b&gt; (srcset)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;화면 크기에 따라 다른 해상도의 이미지를 불러와 성능 최적화&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1739196340916&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;img src=&quot;small.jpg&quot; srcset=&quot;medium.jpg 600w, large.jpg 1200w&quot; sizes=&quot;(max-width: 600px) 100vw, 50vw&quot; alt=&quot;반응형 이미지&quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Lazy Loading 적용&lt;/b&gt; (&lt;span style=&quot;background-color: #f6e199;&quot;&gt;loading=&quot;lazy&quot;&lt;/span&gt;)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;화면에 보이지 않는 이미지는 미리 로딩하지 않고 필요할 때 로딩되도록 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1739196422059&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;img src=&quot;image.jpg&quot; loading=&quot;lazy&quot; alt=&quot;지연 로딩 이미지&quot;&amp;gt;&lt;/code&gt;&lt;/pre&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;2️⃣ CSS 및 JavaScript 최적화 : 불필요한 코드 최소화&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;CSS 및 JavaScript 파일 압축(Minify)하기&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;불필요한 공백과 주석, 줄 바꿈을 제거하여 파일 크기 최소화&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;UglifyJS&lt;/b&gt;&lt;/span&gt;, &lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;Terser&lt;/b&gt;&lt;/span&gt;, &lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;CSSNamo&lt;/b&gt;&lt;/span&gt; 와 같은 도구 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;필요한 파일만 로드하기&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;async&lt;/b&gt;&lt;/span&gt; 또는 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;defer&lt;/b&gt;&lt;/span&gt; 속성을 사용해 JavaScript 비동기 로딩&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1739196759759&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;script src=&quot;script.js&quot; defer&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;필요없는 CSS 제거 (PurgeCSS 활용)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용되지 않는 CSS를 제거하여 스타일 파일 크기 축소&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;3️⃣ 폰트 최적화 : 렌더링 속도 개선&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;시스템 폰트 사용&lt;/b&gt; (웹 폰트 최소화)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1739196854073&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;body {
  font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;font-display: swap;&lt;/b&gt;&lt;/span&gt; 속성 추가해 글꼴 지연 로딩 방지&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1739196890682&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@font-face {
  font-family: 'CustomFont';
  src: url('customfont.woff2') format('woff2');
  font-display: swap;
}&lt;/code&gt;&lt;/pre&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;4️⃣ 서버 및 네트워크 최적화&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;브라우저 캐싱 활성화 (Cahe-Control)&lt;/li&gt;
&lt;li&gt;CDN(Content Delivery Network) 사용&lt;/li&gt;
&lt;li&gt;Gzip/Brotli 압축 적용하여 전송 데이터 최소화&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;</description>
      <category>CSS</category>
      <category>JavaScript</category>
      <category>네트워크 최적화</category>
      <category>서버 최적화</category>
      <category>성능 최적화</category>
      <category>웹 성능 최적화</category>
      <category>최적화</category>
      <author>얌얌커비</author>
      <guid isPermaLink="true">https://kirby-dev.tistory.com/13</guid>
      <comments>https://kirby-dev.tistory.com/entry/%EC%9B%B9-%EC%84%B1%EB%8A%A5-%EC%B5%9C%EC%A0%81%ED%99%94%EB%A5%BC-%EC%9C%84%ED%95%9C-%ED%95%84%EC%88%98-%EC%B2%B4%ED%81%AC-%EB%A6%AC%EC%8A%A4%ED%8A%B8#entry13comment</comments>
      <pubDate>Mon, 10 Feb 2025 23:19:13 +0900</pubDate>
    </item>
    <item>
      <title>HTML/CSS 퍼블리싱, 이렇게 하면 속도가 2배 빨라진다!</title>
      <link>https://kirby-dev.tistory.com/entry/HTMLCSS-%ED%8D%BC%EB%B8%94%EB%A6%AC%EC%8B%B1-%EC%9D%B4%EB%A0%87%EA%B2%8C-%ED%95%98%EB%A9%B4-%EC%86%8D%EB%8F%84%EA%B0%80-2%EB%B0%B0-%EB%B9%A8%EB%9D%BC%EC%A7%84%EB%8B%A4</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;속도.jpg&quot; data-origin-width=&quot;625&quot; data-origin-height=&quot;404&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biIkKa/btsMcPD6XdY/WmNViT3vUFKbEStCoeqFbK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biIkKa/btsMcPD6XdY/WmNViT3vUFKbEStCoeqFbK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biIkKa/btsMcPD6XdY/WmNViT3vUFKbEStCoeqFbK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiIkKa%2FbtsMcPD6XdY%2FWmNViT3vUFKbEStCoeqFbK%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;625&quot; height=&quot;404&quot; data-filename=&quot;속도.jpg&quot; data-origin-width=&quot;625&quot; data-origin-height=&quot;404&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;이번 글에서는 HTML/CSS 퍼블리싱을 더욱 효율적으로 작업할 수 있는 핵심 방법들에 대해 소개합니다!&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. CSS 변수 및 SCSS/SASS 활용 : 스타일을 체계적으로 관리하자!&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CSS 변수를 활용하면 일관된 스타일을 유지하면서도 유지보수를 쉽게 할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1739112091749&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;:root {
  --primary-color: #3498db;
  --secondary-color: #2ecc71;
  --font-size-base: 16px;
}

body {
  color: var(--primary-color);
  font-size: var(--font-size-base);
}&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;SCSS/SASS를 함께 사용하면 변수, 믹스인, 중첩 규칙을 활용해 더욱 체계적인 스타일을 관리할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1739112144401&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$primary-color: #3498db;
$secondary-color: #2ecc71;

.button {
  background-color: $primary-color;
  &amp;amp;:hover {
    background-color: $secondary-color;
  }
}&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;⚠️ CSS 변수를 활용하면 JavaScript와 연동하여 동적으로 테마 변경도 가능합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. 모듈화된 CSS : BEM, SMACSS 방식으로 유지보수를 편리하게!&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CSS의 가장 큰 문제 중 하나는 클래스 네이밍 충돌과 유지보수의 어려움 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이를 해결하기 위해 BEM(Block Element Modifier)이나 SMACSS 방식을 활용하면 코드의 가독성과 확장성을 높일 수 있습니다.&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;BEM 방식 예시&lt;/h3&gt;
&lt;pre id=&quot;code_1739112338154&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div class=&quot;card card--primary&quot;&amp;gt;
  &amp;lt;h2 class=&quot;card__title&quot;&amp;gt;카드 제목&amp;lt;/h2&amp;gt;
  &amp;lt;p class=&quot;card__description&quot;&amp;gt;카드 내용&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1739112367737&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;.card {
  border: 1px solid #ddd;
  padding: 16px;
}

.card__title {
  font-size: 18px;
  font-weight: bold;
}

.card--primary {
  background-color: var(--primary-color);
  color: white;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;⚠️&lt;span&gt; 클래스 네이밍 규칙을 통일하면 협업이 쉬워지고 유지보수가 편해집니다!&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. 최적화된 이미지 사용 및 Lazy Loading 적용 : 페이지 로딩 속도 개선&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미지는 웹사이트에서 가장 많은 리소스를 차지하는 요소 중 하나입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이미지의 경우, 최적화를 통해 속도를 높이고 사용자 경험을 향상시킬 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;적절한 이미지 포맷 사용&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;PNG &amp;rarr; 투명도가 필요한 경우&lt;/li&gt;
&lt;li&gt;JPEG &amp;rarr; 일반 사진이나 그래픽&lt;/li&gt;
&lt;li&gt;WEBP &amp;rarr; 최신 브라우저에서 지원하는 고효율 포맷&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 중 WEBP를 권장합니다. (투명도가 필요한 경우에도 유지됨)&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;Lazy Loading 적용&lt;/h3&gt;
&lt;pre id=&quot;code_1739112571914&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;img src=&quot;image.jpg&quot; loading=&quot;lazy&quot; alt=&quot;최적화된 이미지&quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;⚠️&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt; WEBP 포맷을 사용하면 이미지 용량을 최대 30~50% 까지 줄일 수 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. 접근성을 고려한 시멘틱 마크업 적용&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTML 태그를 올바르게 사용하면 검색엔진최적화 (SEO)에도 유리하고 화면 리더기 사용자들도 쉽게 웹사이트를 이용할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1739112721529&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;header&amp;gt;
  &amp;lt;h1&amp;gt;웹사이트 제목&amp;lt;/h1&amp;gt;
  &amp;lt;nav&amp;gt;
    &amp;lt;ul&amp;gt;
      &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;홈&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
      &amp;lt;li&amp;gt;&amp;lt;a href=&quot;#&quot;&amp;gt;서비스&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
    &amp;lt;/ul&amp;gt;
  &amp;lt;/nav&amp;gt;
&amp;lt;/header&amp;gt;

&amp;lt;article&amp;gt;
  &amp;lt;h2&amp;gt;게시글 제목&amp;lt;/h2&amp;gt;
  &amp;lt;p&amp;gt;게시글 내용입니다.&amp;lt;/p&amp;gt;
&amp;lt;/article&amp;gt;

&amp;lt;button aria-label=&quot;메뉴 열기&quot;&amp;gt;☰&amp;lt;/button&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;⚠️&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt; &amp;lt;button&amp;gt; 요소를 사용할 때 aria-label 을 추가하면 스크린 리더기 사용자가 더 쉽게 이해할 수 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;결론 : 작은 습관이 큰 차이를 만든다!&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹퍼블리싱을 더 효율적으로 하는 방법은 어렵지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CSS 변수를 활용해 스타일을 체계적으로 관리하고 모듈화된 네이밍 규칙을 적용하며 이미지 최적화와 시멘틱 마크업을 신경쓰는 것만으로도 퍼포먼스와 유지보수성이 크게 향상됩니다.&lt;/p&gt;</description>
      <category>CSS</category>
      <category>HTML</category>
      <category>스타일 관리방법</category>
      <category>웹퍼블리싱</category>
      <category>유지보수</category>
      <category>퍼블리싱</category>
      <author>얌얌커비</author>
      <guid isPermaLink="true">https://kirby-dev.tistory.com/12</guid>
      <comments>https://kirby-dev.tistory.com/entry/HTMLCSS-%ED%8D%BC%EB%B8%94%EB%A6%AC%EC%8B%B1-%EC%9D%B4%EB%A0%87%EA%B2%8C-%ED%95%98%EB%A9%B4-%EC%86%8D%EB%8F%84%EA%B0%80-2%EB%B0%B0-%EB%B9%A8%EB%9D%BC%EC%A7%84%EB%8B%A4#entry12comment</comments>
      <pubDate>Sun, 9 Feb 2025 23:55:52 +0900</pubDate>
    </item>
    <item>
      <title>타임리프(Thymeleaf) 마스터하기: HTML과 Java의 완벽한 조화</title>
      <link>https://kirby-dev.tistory.com/entry/%ED%83%80%EC%9E%84%EB%A6%AC%ED%94%84Thymeleaf-%EB%A7%88%EC%8A%A4%ED%84%B0%ED%95%98%EA%B8%B0-HTML%EA%B3%BC-Java%EC%9D%98-%EC%99%84%EB%B2%BD%ED%95%9C-%EC%A1%B0%ED%99%94</link>
      <description>&lt;h2 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;1. Thymeleaf란?&lt;/span&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;타임리프.png&quot; data-origin-width=&quot;1366&quot; data-origin-height=&quot;768&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rhLuC/btsMa7y7NAG/7Eq6piICUZNeS8LRHR3vt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rhLuC/btsMa7y7NAG/7Eq6piICUZNeS8LRHR3vt1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rhLuC/btsMa7y7NAG/7Eq6piICUZNeS8LRHR3vt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrhLuC%2FbtsMa7y7NAG%2F7Eq6piICUZNeS8LRHR3vt1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1366&quot; height=&quot;768&quot; data-filename=&quot;타임리프.png&quot; data-origin-width=&quot;1366&quot; data-origin-height=&quot;768&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Thymeleaf(타임리프)는 Java 기반의 템플릿 엔진으로, HTML을 동적으로 렌더링하는 데 사용됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Spring Boot에서 가장 많이 사용되는 템플릿 엔진 중 하나로, JSP를 대체할 수 있는 강력한 기능을 제공합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;주요 특징&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-pm-slice=&quot;1 1 [&amp;quot;list&amp;quot;,{&amp;quot;spread&amp;quot;:false,&amp;quot;start&amp;quot;:211,&amp;quot;end&amp;quot;:482},&amp;quot;regular_list_item&amp;quot;,{&amp;quot;start&amp;quot;:211,&amp;quot;end&amp;quot;:268}]&quot;&gt;&lt;b&gt;HTML 친화적&lt;/b&gt; : HTML 파일을 그대로 유지하면서 서버에서 동적으로 렌더링할 수 있음&lt;/li&gt;
&lt;li data-pm-slice=&quot;1 1 [&amp;quot;list&amp;quot;,{&amp;quot;spread&amp;quot;:false,&amp;quot;start&amp;quot;:211,&amp;quot;end&amp;quot;:482},&amp;quot;regular_list_item&amp;quot;,{&amp;quot;start&amp;quot;:211,&amp;quot;end&amp;quot;:268}]&quot;&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&lt;b&gt;서버-클라이언트 양방향 지원 &lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;: 정적 HTML로도 동작하며, 서버에서 데이터 바인딩 가능&lt;/span&gt;&lt;/li&gt;
&lt;li data-pm-slice=&quot;1 1 [&amp;quot;list&amp;quot;,{&amp;quot;spread&amp;quot;:false,&amp;quot;start&amp;quot;:211,&amp;quot;end&amp;quot;:482},&amp;quot;regular_list_item&amp;quot;,{&amp;quot;start&amp;quot;:211,&amp;quot;end&amp;quot;:268}]&quot;&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&lt;b&gt;Spring과의 강력한 통합 &lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;: Spring MVC와 쉽게 연동할 수 있으며, Model 데이터를 HTML에 매핑하기 용이함&lt;/span&gt;&lt;/li&gt;
&lt;li data-pm-slice=&quot;1 1 [&amp;quot;list&amp;quot;,{&amp;quot;spread&amp;quot;:false,&amp;quot;start&amp;quot;:211,&amp;quot;end&amp;quot;:482},&amp;quot;regular_list_item&amp;quot;,{&amp;quot;start&amp;quot;:211,&amp;quot;end&amp;quot;:268}]&quot;&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&lt;b&gt;템플릿 재사용 가능 &lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;: &lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;th:replace&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt; 및 &lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;th:fragment&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt; 등을 이용해 HTML 요소를 재사용할 수 있음&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;2. Thymeleaf 기본 문법&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;텍스트 출력&lt;/span&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1738936376988&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;p th:text=&quot;${message}&quot;&amp;gt;기본 텍스트&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;message&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;변수의 값을&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;태그 안에 출력합니다.&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;속성 변경&lt;/span&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1738936449892&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;a th:href=&quot;@{/home}&quot;&amp;gt;홈으로 이동&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;조건문&lt;/span&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1738936471487&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;p th:if=&quot;${user != null}&quot;&amp;gt;사용자 정보: &amp;lt;span th:text=&quot;${user.name}&quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;반복문&lt;/h3&gt;
&lt;pre id=&quot;code_1738936496265&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;ul&amp;gt;
    &amp;lt;li th:each=&quot;item : ${items}&quot; th:text=&quot;${item}&quot;&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;3. Spring Boot 프로젝트에서 Thymeleaf 적용&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;Spring Boot 프로젝트 설정&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;1. &lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;spring-boot-starter-thymeleaf&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;의존성 추가&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738936606338&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;org.springframework.boot&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;spring-boot-starter-thymeleaf&amp;lt;/artifactId&amp;gt;
&amp;lt;/dependency&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;2. &lt;span&gt;Controller에서 데이터 전달&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738936653083&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;@Controller
public class HomeController {
    @GetMapping(&quot;/&quot;)
    public String home(Model model) {
        model.addAttribute(&quot;message&quot;, &quot;Hello, Thymeleaf!&quot;);
        return &quot;index&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;3. &lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;index.html&lt;/b&gt;&lt;/span&gt;&lt;span&gt; 템플릿 생성&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738936688850&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html xmlns:th=&quot;http://www.thymeleaf.org&quot;&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;title&amp;gt;Thymeleaf Example&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body&amp;gt;
    &amp;lt;h1 th:text=&quot;${message}&quot;&amp;gt;기본 메시지&amp;lt;/h1&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;4. 고급 기능 활용&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;Fragment (템플릿 재사용)&lt;/span&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1738936827015&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;!-- header.html --&amp;gt;
&amp;lt;header th:fragment=&quot;header&quot;&amp;gt;
    &amp;lt;h1&amp;gt;공통 헤더&amp;lt;/h1&amp;gt;
&amp;lt;/header&amp;gt;

&amp;lt;!-- index.html --&amp;gt;
&amp;lt;div th:replace=&quot;header :: header&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;Spring Security와 Thymeleaf 연동&lt;/span&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1738936869555&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div sec:authorize=&quot;isAuthenticated()&quot;&amp;gt;
    &amp;lt;p&amp;gt;로그인 사용자: &amp;lt;span sec:authentication=&quot;name&quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;국제화(i18n) 지원&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;1. &lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;messages.properties&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt; 파일 생성&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738937046946&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;welcome.message=환영합니다!&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. &lt;span&gt;템플릿에서 메시지 출력&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738937103676&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;p th:text=&quot;#{welcome.message}&quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;5. 실무에서의 Thymeleaf 활용 팁&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-pm-slice=&quot;1 1 [&amp;quot;list&amp;quot;,{&amp;quot;spread&amp;quot;:false,&amp;quot;start&amp;quot;:2122,&amp;quot;end&amp;quot;:2289},&amp;quot;regular_list_item&amp;quot;,{&amp;quot;start&amp;quot;:2122,&amp;quot;end&amp;quot;:2170}]&quot;&gt;&lt;b&gt;템플릿 분할&lt;/b&gt; : th:fragment를 적극 활용해 템플릿 모듈화하기&lt;/li&gt;
&lt;li data-pm-slice=&quot;1 1 [&amp;quot;list&amp;quot;,{&amp;quot;spread&amp;quot;:false,&amp;quot;start&amp;quot;:2122,&amp;quot;end&amp;quot;:2289},&amp;quot;regular_list_item&amp;quot;,{&amp;quot;start&amp;quot;:2122,&amp;quot;end&amp;quot;:2170}]&quot;&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&lt;b&gt;성능 최적화 &lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;: HTML 구조를 단순화하고, 불필요한 반복문 줄이기&lt;/span&gt;&lt;/li&gt;
&lt;li data-pm-slice=&quot;1 1 [&amp;quot;list&amp;quot;,{&amp;quot;spread&amp;quot;:false,&amp;quot;start&amp;quot;:2122,&amp;quot;end&amp;quot;:2289},&amp;quot;regular_list_item&amp;quot;,{&amp;quot;start&amp;quot;:2122,&amp;quot;end&amp;quot;:2170}]&quot;&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;&lt;b&gt;AJAX와 조합&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;: Thymeleaf는 정적인 HTML을 관리하고, 동적인 요소는 AJAX를 활용하면 더욱 효과적임&lt;/span&gt;&lt;/li&gt;
&lt;/ul&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&gt;이제 타임리프를 활용하여 효율적이고 유지보수하기 쉬운 템플릿을 만들어보세요!&lt;/span&gt;&lt;/p&gt;</description>
      <category>spring boot</category>
      <category>Spring Security</category>
      <category>Thymeleaf</category>
      <category>실무 팁</category>
      <category>타임리프</category>
      <category>타임리프 팁</category>
      <category>활용 팁</category>
      <author>얌얌커비</author>
      <guid isPermaLink="true">https://kirby-dev.tistory.com/11</guid>
      <comments>https://kirby-dev.tistory.com/entry/%ED%83%80%EC%9E%84%EB%A6%AC%ED%94%84Thymeleaf-%EB%A7%88%EC%8A%A4%ED%84%B0%ED%95%98%EA%B8%B0-HTML%EA%B3%BC-Java%EC%9D%98-%EC%99%84%EB%B2%BD%ED%95%9C-%EC%A1%B0%ED%99%94#entry11comment</comments>
      <pubDate>Fri, 7 Feb 2025 23:13:05 +0900</pubDate>
    </item>
    <item>
      <title>공통 모듈(Common Module), 왜 중요할까?</title>
      <link>https://kirby-dev.tistory.com/entry/%EA%B3%B5%ED%86%B5-%EB%AA%A8%EB%93%88Common-Module-%EC%99%9C-%EC%A4%91%EC%9A%94%ED%95%A0%EA%B9%8C</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;왜 같은 코드가 여기저기?&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;1884faab8cf52bc9f.jpg&quot; data-origin-width=&quot;898&quot; data-origin-height=&quot;872&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/M5Exr/btsL8JMgO3V/lJWQDckb9By3ilyISnLIAK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/M5Exr/btsL8JMgO3V/lJWQDckb9By3ilyISnLIAK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/M5Exr/btsL8JMgO3V/lJWQDckb9By3ilyISnLIAK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FM5Exr%2FbtsL8JMgO3V%2FlJWQDckb9By3ilyISnLIAK%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;898&quot; height=&quot;872&quot; data-filename=&quot;1884faab8cf52bc9f.jpg&quot; data-origin-width=&quot;898&quot; data-origin-height=&quot;872&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;공통 모듈의 필요성&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발을 하다보면 같은 기능을 여러 곳에 반복해서 사용하는 경우가 많습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;로그인 검증 : 모든 서비스에서 로그인 검증이 필요함&lt;/li&gt;
&lt;li&gt;날짜 포맷 변환 : 여러 곳에서 동일한 포맷이 필요함&lt;/li&gt;
&lt;li&gt;API 호출 : 공통된 방식으로 API를 호출해야함&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이럴 때 코드를 중복해서 작성하면 유지보수가 어렵고 버그가 발생할 확률도 높아집니다. 이런 경우에 공통 모듈이 필요합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;공통 모듈이란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공통 모듈은 여러 곳에서 재사용할 수 있도록 설계된 코드 묶음입니다. 함수, 클래스, 라이브러리 형태로 제공되며 프로젝트의 재사용성을 높이고 유지보수를 편리하게 만듭니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;공통모듈을 만들 때 고려해야할 점&lt;/h2&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;재사용 가능성 : 특정 기능에 국한되지 않고 다양한 곳에서 활용할 수 있도록 범용성을 고려해야함&lt;/li&gt;
&lt;li&gt;유지보수 용이성 : 모듈이 수정될 경우, 다른 코드에 영향을 최소해야함&lt;/li&gt;
&lt;li&gt;확장성 : 향후 기능 추가가 용이하도록 설계해야함&lt;/li&gt;
&lt;li&gt;의존성 최소화 : 특정 라이브러리나 환경에 의존적이지 않도록 설계하는 것이 중요함&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;[예제] 공통 유틸리티 모듈 만들기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음은 JavaScript로 만든 날짜 포맷 변환 공통 모듈 예제입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1738845198330&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// utils/dateFormatter.js
export function formatDate(date, format = 'YYYY-MM-DD') {
    const d = new Date(date);
    const year = d.getFullYear();
    const month = String(d.getMonth() + 1).padStart(2, '0');
    const day = String(d.getDate()).padStart(2, '0');
    
    return format.replace('YYYY', year).replace('MM', month).replace('DD', day);
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 이 모듈을 여러 곳에서 재사용할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1738845213210&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import { formatDate } from './utils/dateFormatter';

const today = formatDate(new Date());
console.log(today); // 2025-02-06 (예시)&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;공통 모듈을 관리하는 방법&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. 디렉터리 구조 정리&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공통 모듈을 프로젝트에서 효과적으로 관리하려면 디렉터리 구조를 잘 정리해야합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. 버전 관리 및 문서화&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Git을 활용한 버전 관리 : 공통 모듈을 업데이트할 때 각 버전마다 태깅하여 기록을 남김&lt;/li&gt;
&lt;li&gt;README 작성 : 각 모듈이 어떤 기능을 하는지 간단한 예제와 함께 설명을 남김&lt;/li&gt;
&lt;li&gt;TypeScript 사용 : 타입을 명확하게 정의하여 안정성을 높임&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. 패키지화 후 배포&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공통 모듈이 여러 프로젝트에서 사용된다면 NPM 패키지로 배포하는 것 도 좋은 방법!&lt;/p&gt;
&lt;pre id=&quot;code_1738845415293&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm init
npm publish&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;공통 모듈을 잘 활용한다면?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;코드 중복 감소&lt;/b&gt;&lt;/span&gt; &lt;span&gt;&amp;rarr; 유지보수가 쉬워짐&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;일관된 코드 스타일&lt;/b&gt;&lt;/span&gt; &lt;span&gt;&amp;rarr; 가독성이 좋아짐&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;버그 수정 용이&lt;/b&gt;&lt;/span&gt; &lt;span&gt;&amp;rarr; 한 번 수정으로 전체 적용 가능&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;생산성 향상&lt;/b&gt;&lt;/span&gt; &lt;span&gt;&amp;rarr; 개발 속도가 빨라짐&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;공통 모듈을 잘 설계하면 좋은 개발 습관을 기를 수 있고 팀 전체의 효율성을 높일 수 있습니다.&lt;/span&gt;&lt;/p&gt;</description>
      <category>같은 코드</category>
      <category>공통 모듈</category>
      <category>공통 모듈 중요성</category>
      <category>구조 정리</category>
      <category>모듈</category>
      <category>유지보수</category>
      <category>의존성 최소화</category>
      <category>재사용</category>
      <category>필요성</category>
      <category>확장성</category>
      <author>얌얌커비</author>
      <guid isPermaLink="true">https://kirby-dev.tistory.com/10</guid>
      <comments>https://kirby-dev.tistory.com/entry/%EA%B3%B5%ED%86%B5-%EB%AA%A8%EB%93%88Common-Module-%EC%99%9C-%EC%A4%91%EC%9A%94%ED%95%A0%EA%B9%8C#entry10comment</comments>
      <pubDate>Thu, 6 Feb 2025 21:43:55 +0900</pubDate>
    </item>
    <item>
      <title>UX/UI 디자인 트렌드 2025 : 놓치면 안될 뉴모피즘, 글래스모피즘 그리고 다크모드!</title>
      <link>https://kirby-dev.tistory.com/entry/UXUI-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8A%B8%EB%A0%8C%EB%93%9C-2025-%EB%86%93%EC%B9%98%EB%A9%B4-%EC%95%88%EB%90%A0-%EB%89%B4%EB%AA%A8%ED%94%BC%EC%A6%98-%EA%B8%80%EB%9E%98%EC%8A%A4%EB%AA%A8%ED%94%BC%EC%A6%98-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EB%8B%A4%ED%81%AC%EB%AA%A8%EB%93%9C</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;최근 UX/UI 디자인 트렌드는 단순한 미적 요소를 넘어서 사용자 경험을 극대화하는 방향으로 발전하고 있습니다. 그 중에서도 &lt;b&gt;뉴모피즘(&lt;span&gt;Neumorphism&lt;/span&gt;)&lt;/b&gt;, &lt;b&gt;글래스모피즘(&lt;span&gt;Glassmorphism&lt;/span&gt;)&lt;/b&gt;, 그리고 &lt;span&gt;&lt;b&gt;다크모드(Dark Mode)&lt;/b&gt; 지원 강화는 2025년에도 중요한 디자인 요소로 자리 잡고 있습니다. 이번 글에서는 이 세가지 트렌드를 깊이 있게 살펴보고 실제 디자인에 적용하는 방법과 응용 사례를 소개하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. &lt;b&gt;뉴모피즘(&lt;span&gt;Neumorphism&lt;/span&gt;): 부드러운 입체감을 활용한 디자인&lt;/b&gt;&lt;/h2&gt;
&lt;h3 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  뉴모피즘이란?&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;뉴모피즘은 &lt;b&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&amp;lsquo;뉴(New) + 스큐어모피즘(Skeuomorphism)&amp;rsquo;&lt;/span&gt;&lt;/b&gt;의 합성어로,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;기존의 &lt;b&gt;사실적인 디자인(Skeuomorphism)과 미니멀리즘(Flat Design)의 중간 형태를 띠는 스타일&lt;/b&gt;입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;뉴모피즘 디자인은 부드러운 그림자와 은은한 입체감을 활용하여 인터페이스 요소들이 마치 배경에서 자연스럽게 떠오르는 듯한 효과를 주어 심플하면서도 직관적인 디자인을 구현할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  뉴모피즘 디자인의 특징&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;부드러운 그림자 효과 : 요소가 배경과 자연스럽게 어우러짐&lt;/li&gt;
&lt;li&gt;입체적이고 미니멀한 UI : 둥글고 따뜻한 느낌을 줌&lt;/li&gt;
&lt;li&gt;낮은 대비(low contrast) : 사용성을 고려한 적절한 색상 배합 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  뉴모피즘 적용 시 고려할 점&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;명암 대비가 너무 약하면 가독성이 떨어질 수 있음&lt;/li&gt;
&lt;li&gt;다크모드와의 조합이 어려울 수 있음&lt;/li&gt;
&lt;li&gt;사용성이 높은 버튼 및 입력 필드에서 혼동을 줄 가능성이 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; ️ 뉴모피즘 UI 예제 및 쉽게 적용하는 팁&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-02-05 오후 11.54.57.png&quot; data-origin-width=&quot;1140&quot; data-origin-height=&quot;689&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bl1KWI/btsL7E4T1Ao/6ZKc4kp13BXOYKqAtLtXE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bl1KWI/btsL7E4T1Ao/6ZKc4kp13BXOYKqAtLtXE0/img.png&quot; data-alt=&quot;Neumorphism.io&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bl1KWI/btsL7E4T1Ao/6ZKc4kp13BXOYKqAtLtXE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbl1KWI%2FbtsL7E4T1Ao%2F6ZKc4kp13BXOYKqAtLtXE0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1140&quot; height=&quot;689&quot; data-filename=&quot;스크린샷 2025-02-05 오후 11.54.57.png&quot; data-origin-width=&quot;1140&quot; data-origin-height=&quot;689&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Neumorphism.io&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;figure id=&quot;og_1738767612895&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;Neumorphism/Soft UI CSS shadow generator&quot; data-og-description=&quot;CSS code generator that will help with colors, gradients and shadows to adapt this new design trend or discover its posibilities.&quot; data-og-host=&quot;neumorphism.io&quot; data-og-source-url=&quot;https://neumorphism.io/&quot; data-og-url=&quot;https://neumorphism.io/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/pVnmr/hyYccAnk6z/guBZAk5qeJtW9TG9LUFSeK/img.png?width=1200&amp;amp;height=872&amp;amp;face=0_0_1200_872,https://scrap.kakaocdn.net/dn/p2FtV/hyYci8qgG1/0gWzdw8Kf9V48ZuK2WHDt0/img.png?width=1200&amp;amp;height=872&amp;amp;face=0_0_1200_872&quot;&gt;&lt;a href=&quot;https://neumorphism.io/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://neumorphism.io/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/pVnmr/hyYccAnk6z/guBZAk5qeJtW9TG9LUFSeK/img.png?width=1200&amp;amp;height=872&amp;amp;face=0_0_1200_872,https://scrap.kakaocdn.net/dn/p2FtV/hyYci8qgG1/0gWzdw8Kf9V48ZuK2WHDt0/img.png?width=1200&amp;amp;height=872&amp;amp;face=0_0_1200_872');&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;Neumorphism/Soft UI CSS shadow generator&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;CSS code generator that will help with colors, gradients and shadows to adapt this new design trend or discover its posibilities.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;neumorphism.io&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;2. 글래스모피즘(Glassmorphism): 유리 같은 투명한 UI 디자인&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  글래스모피즘이란?&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;글래스모피즘은 마치 &lt;b&gt;반투명한 유리 패널을 겹쳐 놓은 듯한 효과를 주는 UI 디자인 스타일&lt;/b&gt;입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이 스타일은 2020년대 초반부터 유행했으며, &lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;Apple의 macOS 및 Windows UI&lt;/b&gt;&lt;/span&gt;에서도 자주 사용되었습니다.&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  글래스모피즘 디자인의 특징&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;반투명한 블러 효과 : 유리 느낌을 강조&lt;/li&gt;
&lt;li&gt;빛 반사와 그림자 효과 : 입체감을 더해 생동감 있는 디자인 구현&lt;/li&gt;
&lt;li&gt;컬러 그라데이션 활용 : 투명한 요소들이 자연스럽게 어우러짐&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  글래스모피즘 적용 시 고려할 점&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;지나치게 많은 블러 효과는 성능 저하를 유발할 수 있음&lt;/li&gt;
&lt;li&gt;가독성을 높이기 위해 배경과 텍스트의 명확한 대비 필요&lt;/li&gt;
&lt;li&gt;UI 요소들이 겹쳐 보일 가능성이 있어 사용성 테스트 필수&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot; data-pm-slice=&quot;1 1 []&quot;&gt;&lt;span&gt; ️&lt;span&gt;&amp;nbsp; 글래스 모피즘 간편하게 구현하는 팁!&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-02-05 오후 11.59.29.png&quot; data-origin-width=&quot;1194&quot; data-origin-height=&quot;925&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/doqzUn/btsL7Gn5SQf/yDoMSCpcZiSz2y3kmoWum1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/doqzUn/btsL7Gn5SQf/yDoMSCpcZiSz2y3kmoWum1/img.png&quot; data-alt=&quot;css.glass&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/doqzUn/btsL7Gn5SQf/yDoMSCpcZiSz2y3kmoWum1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdoqzUn%2FbtsL7Gn5SQf%2FyDoMSCpcZiSz2y3kmoWum1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1194&quot; height=&quot;925&quot; data-filename=&quot;스크린샷 2025-02-05 오후 11.59.29.png&quot; data-origin-width=&quot;1194&quot; data-origin-height=&quot;925&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;css.glass&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;figure id=&quot;og_1738767605829&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;Glassmorphism CSS Effect Generator - Glass CSS&quot; data-og-description=&quot;Copy and paste this Glassmorphism CSS snippet into your frontend project for an amazing CSS glass effect.&quot; data-og-host=&quot;css.glass&quot; data-og-source-url=&quot;https://css.glass/&quot; data-og-url=&quot;https://css.glass/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ugVTe/hyYckd6tbl/HxGlpWJSAKnKK0hfnQZCp1/img.png?width=1183&amp;amp;height=624&amp;amp;face=0_0_1183_624,https://scrap.kakaocdn.net/dn/zfnFi/hyX7Ptkmww/sAfQkx6Mi9vfRBk6WxOQ80/img.png?width=1183&amp;amp;height=624&amp;amp;face=0_0_1183_624&quot;&gt;&lt;a href=&quot;https://css.glass/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://css.glass/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ugVTe/hyYckd6tbl/HxGlpWJSAKnKK0hfnQZCp1/img.png?width=1183&amp;amp;height=624&amp;amp;face=0_0_1183_624,https://scrap.kakaocdn.net/dn/zfnFi/hyX7Ptkmww/sAfQkx6Mi9vfRBk6WxOQ80/img.png?width=1183&amp;amp;height=624&amp;amp;face=0_0_1183_624');&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;Glassmorphism CSS Effect Generator - Glass CSS&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Copy and paste this Glassmorphism CSS snippet into your frontend project for an amazing CSS glass effect.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;css.glass&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;3. 다크모드(Dark Mode) 지원 강화&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  다크모드란?&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;다크모드는 기존의 밝은 배경 대신 어두운 배경을 활용하여 사용자 경험을 향상시키는 디자인 방식입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;최근 많은 웹사이트와 앱에서 다크모드를 기본적으로 지원하고 있으며, 이는 사용자 피로도를 줄이고 배터리 효율을 높이는 데 기여합니다.&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  다크모드 디자인의 특징&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;눈의 피로 감소 : 어두운 환경에서의 가독성이 높아짐&lt;/li&gt;
&lt;li&gt;배터리 절약 효과 : OLED 및 AMOLED 화면에서 전력 소모 감소&lt;/li&gt;
&lt;li&gt;미니멀하고 세련된 느낌 : 현대적인 UI 트렌드와 잘 어울림&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  다크모드 적용 시 고려할 점&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;대비가 너무 강하면 가독성이 떨어질 수 있음&lt;/li&gt;
&lt;li&gt;텍스트와 배경의 명확한 컬러 조합 필요&lt;/li&gt;
&lt;li&gt;다크모드와 라이트모드를 쉽게 전환할 수 있도록 UI 설계&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span&gt;디자인 트렌드를 현명하게 활용하는 방법&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;2025년 UX/UI 디자인의 핵심은 '사용자 경험을 극대화하는 비주얼 스타일'입니다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;뉴모피즘은 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;부드러운 입체감과 미니멀리즘을 결합한 UI&lt;/b&gt;&lt;/span&gt;를 제공합니다.&lt;/li&gt;
&lt;li&gt;글래스모피즘은 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;반투명하고 미래지향적인 유리효과&lt;/b&gt;&lt;/span&gt;를 적용할 수 있습니다.&lt;/li&gt;
&lt;li&gt;다크모드는 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;시각적 편안함과 에너지 효율성을 극대화하는 디자인&lt;/b&gt;&lt;/span&gt; 요소로 자리잡고 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소박한 한마디&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;글래스모피즘은 2023년에도 핫하게 떠올라 Nike에서도 많이 사용했던 기억이 납니다. (그에 맞춰 저도 활용해보았기에)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이러한 UX/UI 트렌드에 대해 빠르게 알고 싶다면 Dribbble, Behance, Google Material Design Guide, Pinterest 등에 접속해 다양한 사례를 살펴볼 수 있습니다.&lt;/p&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://dribbble.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://dribbble.com/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1738768145430&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;Dribbble - Discover the World&amp;rsquo;s Top Designers &amp;amp; Creative Professionals&quot; data-og-description=&quot;Gaming landing, page web UI design&quot; data-og-host=&quot;dribbble.com&quot; data-og-source-url=&quot;https://dribbble.com/&quot; data-og-url=&quot;https://dribbble.com/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://dribbble.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://dribbble.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Dribbble - Discover the World&amp;rsquo;s Top Designers &amp;amp; Creative Professionals&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Gaming landing, page web UI design&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;dribbble.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.behance.net/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://www.behance.net/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1738768160981&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;Search Projects :: Photos, videos, logos, illustrations and branding :: Behance&quot; data-og-description=&quot;&quot; data-og-host=&quot;www.behance.net&quot; data-og-source-url=&quot;https://www.behance.net/&quot; data-og-url=&quot;https://www.behance.net/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://www.behance.net/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.behance.net/&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;Search Projects :: Photos, videos, logos, illustrations and branding :: Behance&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.behance.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>UI</category>
      <category>UX</category>
      <category>uxui디자이너</category>
      <category>uxui퍼블리셔</category>
      <category>글래스모피즘</category>
      <category>뉴모피즘</category>
      <category>디자인 가이드</category>
      <category>디자인 트렌드</category>
      <category>웹퍼블리셔</category>
      <category>웹퍼블리싱</category>
      <author>얌얌커비</author>
      <guid isPermaLink="true">https://kirby-dev.tistory.com/9</guid>
      <comments>https://kirby-dev.tistory.com/entry/UXUI-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8A%B8%EB%A0%8C%EB%93%9C-2025-%EB%86%93%EC%B9%98%EB%A9%B4-%EC%95%88%EB%90%A0-%EB%89%B4%EB%AA%A8%ED%94%BC%EC%A6%98-%EA%B8%80%EB%9E%98%EC%8A%A4%EB%AA%A8%ED%94%BC%EC%A6%98-%EA%B7%B8%EB%A6%AC%EA%B3%A0-%EB%8B%A4%ED%81%AC%EB%AA%A8%EB%93%9C#entry9comment</comments>
      <pubDate>Thu, 6 Feb 2025 00:10:31 +0900</pubDate>
    </item>
    <item>
      <title>해킹을 탐지하는 법! 침입 탐지 및 모니터링 가이드</title>
      <link>https://kirby-dev.tistory.com/entry/%ED%95%B4%ED%82%B9%EC%9D%84-%ED%83%90%EC%A7%80%ED%95%98%EB%8A%94-%EB%B2%95-%EC%B9%A8%EC%9E%85-%ED%83%90%EC%A7%80-%EB%B0%8F-%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81-%EA%B0%80%EC%9D%B4%EB%93%9C</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;해킹탐지.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cny74S/btsL7Qwb8iU/4fE98HPuuSUjkzneYMANwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cny74S/btsL7Qwb8iU/4fE98HPuuSUjkzneYMANwk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cny74S/btsL7Qwb8iU/4fE98HPuuSUjkzneYMANwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcny74S%2FbtsL7Qwb8iU%2F4fE98HPuuSUjkzneYMANwk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;480&quot; data-filename=&quot;해킹탐지.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;1. 침임 탐지란?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;침입 탐지(IDS, Intrusion Detection System)는 네트워크 또는 시스템에서 악의적인 활동을 감지하고 경고하는 보안 기술입니다. 이를 통해 해킹 시도를 조기에 발견하고 대응할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;침입 탐지 시스템 유형&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;b&gt;유형&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;b&gt;설명&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;b&gt;네트워크 기반 IDS (NIDS)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;네트워크 트래픽을 감시하여 공격을 탐지함&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;&lt;b&gt;호스트 기반 IDS (HIDS)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;운영체제 및 애플리케이션 로그를 감시&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;2. IDS vs IPS 차이점&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많이 혼동하는 개념이 IDS와 IPS(침입 방지 시스템)입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;IDS는 감시 카메라처럼 감지 후 경고만 하지만, IDS는 도둑이 문을 열자마자 자동으로 잠그는 시스템과 같습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;IDS (Intrusion Detection System)&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단순 탐지 및 경고&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;IPS (&lt;span style=&quot;background-color: #f6e199;&quot;&gt;Intrusion Prevention System&lt;/span&gt;)&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;탐지 후 차단까지 수행&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;3. IDS의 주요 탐지 방식&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;기업 환경에서는 시그니처 기반과 이상 탐지를 조합하여 활용하는 것이 효과적입니다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;시그니처 기반 탐지&lt;/b&gt;&lt;br /&gt;- 알려진 공격 패턴(시그니처)을 비교하여 탐지&lt;br /&gt;- 빠르고 정확하지만 새로운 공격에 취약함&lt;br /&gt;- 예시도구 : Snort, Suricata&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;이상 탐지&lt;/b&gt;&lt;br /&gt;- 정상적인 트래픽과 비교하여 이상 패턴 감지&lt;br /&gt;- 신종 공격 탐지 가능하지만 오탐 가능성 존재함&lt;br /&gt;- 예시도구 : Zeek(Bro), OSSEC&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;오용 탐지 기법&lt;/b&gt;&lt;br /&gt;- &lt;b&gt;시그니처 기반(Signature Base)&lt;/b&gt; : 알려진 공격 패턴을 데이터베이스와 비교하여 탐지&lt;br /&gt;- &lt;b&gt;지식 기반(Knowledge Base)&lt;/b&gt; : 공격 지식을 기반으로 하는 규칙을 적용하여 탐지&lt;br /&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;이상 탐지 기법&lt;/b&gt;&lt;br /&gt;- &lt;b&gt;행동 기반(Behavior Detection)&lt;/b&gt; : 정상적인 행동 패턴과 비교하여 이상 여부 판단&lt;br /&gt;- &lt;b&gt;통계 기반(Statistical Detection)&lt;/b&gt; : 통계적으로 정상과 비정상을 분석하여 탐지&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;4. IDS 실전 실습 : Snort 설정하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;IDS를 운영할 때는 너무 많은 경고가 발생하지 않도록 적절한 룰 튜닝이 필수입니다.&lt;/p&gt;
&lt;pre id=&quot;code_1738670240888&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sudo apt update &amp;amp;&amp;amp; sudo apt install snort -y
snort -A console -i eth0 -c /etc/snort/snort.conf -l /var/log/snort/&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;위 명령어를 실행하면 Snort가 네트워크 인터페이스 eth0 의 트래픽을 감시하며 로그를 남깁니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5. IDS의 효과적인 설치 위치&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;네트워크 경계 : 외부와 내부 네트워크 사이의 트래픽 감시&lt;/li&gt;
&lt;li&gt;서버 앞단 : 중요한 서버로 향하는 트래픽을 감시&lt;/li&gt;
&lt;li&gt;엔드포인트 장치 : 개별 호스트의 이상 징후 탐지&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;6. IDS 로그 분석 및 대응 전략&lt;/h2&gt;
&lt;h3 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt; &amp;nbsp; &lt;/span&gt;IDS 로그 예제&lt;/h3&gt;
&lt;pre id=&quot;code_1738670449080&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[**] [1:1000001:0] SQL Injection Attempt Detected [**]
[Priority: 1] {TCP} 192.168.1.100:5000 -&amp;gt; 10.0.0.5:80&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;공격 유형 : SQL Injection&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공격자 IP : 192.168.1.100&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;타겟 서버 : 10.0.0.5&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span&gt;  대응 방법&lt;/span&gt;&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;해당 IP를 방화벽에서 차단&lt;/li&gt;
&lt;li&gt;웹 애플리케이션 방화볍(WAF) 설정 강화&lt;/li&gt;
&lt;li&gt;해당 요청과 관련된 다른 로그 분석&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;7. 클리핑 레벨 (Clipping Level)&lt;/h2&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 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-pm-slice=&quot;1 1 []&quot;&gt;&lt;span&gt;  클리핑 레벨을 적절히 설정하면 불필요한 경고를 줄이고 중요한 이벤트에 집중할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-pm-slice=&quot;1 1 []&quot;&gt;8. 보안 감사 (Audit Trailing)&lt;/h2&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-pm-slice=&quot;1 1 []&quot;&gt;보안 감사는 시스템 및 네트워크의 활동을 기록하고 분석하여 침입 시도를 조사하는 과정입니다. 이를 통해 보안 사고 발생 시 증거를 확보하고 추후 대응 전략을 수립할 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-pm-slice=&quot;1 1 []&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot; data-pm-slice=&quot;1 1 []&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt; &lt;span&gt; 보안 감사 로그는 법적 증거로 활용될 수도 있으므로 안전하게 저장하고 관리하는 것이 중요합니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot; data-pm-slice=&quot;1 1 []&quot;&gt;9. 침입 차단 시스템 (IPS, Intrusion Prevention System)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IPS는 IDS의 탐지 기능을 넘어서 실시간으로 공격을 차단하는 역할을 수행하는 보안 시스템입니다. 공격을 탐지하면 자동으로 방화벽 룰을 조정하거나 악성 트래픽을 차단하여 네트워크를 보호합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt; IPS는 보안 정책과 연계하여 설정해야 하며 오탐이 발생하지 않도록 신중한 튜닝이 필요합니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;10. 허니팟 (Honeypot)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;허니팟은 해커를 유인하여 공격 패턴을 분석하는 가짜 시스템입니다. 이를 통해 실제 시스템을 보호하고 해커의 전략을 연구하여 보안 정책을 개선할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt; 허니팟을 운영할 때에는 실제 네트워크와 완전히 분리하여 설정해야 합니다. 그렇지 않으면 해커가 허니팟을 이용해 내부 시스템을 공격할 수도 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;11. 통합 보안 관리 시스템 (Enterprise Security Management, ESM)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ESM은 IDS, IPS, 방화벽, SIEM 등 다양한 보안 시스템을 통합하여 중앙에서 관리하는 솔루션입니다. 모든 보안 이벤트를 한 곳에서 모니터링하고 대응할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&lt;span&gt; 기업 환경에서는 ESM을 도입하여 IDS, IPS, 방화벽을 통합 관리하면 보안 운영의 효율성을 극대화할 수 있습니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IDS는 네트워크와 시스템을 보호하는 핵심 기술이며 효과적인 탐지를 위해 다양한 탐지 기법과 도구를 조합하여 활용하는 것이 중요합니다. 실전에서는 Snort, Suricata, Zeek 등의 오픈소스 도구를 적극적으로 활용하며 로그 분석을 병행해야 합니다.&lt;/p&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: #f6e199;&quot;&gt;&lt;b&gt;  구독자님의 회사나 개인 프로젝트에서는 어떤 IDS를 사용하고 계신가요? 댓글로 의견을 남겨주세요!&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <author>얌얌커비</author>
      <guid isPermaLink="true">https://kirby-dev.tistory.com/8</guid>
      <comments>https://kirby-dev.tistory.com/entry/%ED%95%B4%ED%82%B9%EC%9D%84-%ED%83%90%EC%A7%80%ED%95%98%EB%8A%94-%EB%B2%95-%EC%B9%A8%EC%9E%85-%ED%83%90%EC%A7%80-%EB%B0%8F-%EB%AA%A8%EB%8B%88%ED%84%B0%EB%A7%81-%EA%B0%80%EC%9D%B4%EB%93%9C#entry8comment</comments>
      <pubDate>Tue, 4 Feb 2025 21:21:59 +0900</pubDate>
    </item>
    <item>
      <title>모듈화와 응집도/결합도 완벽 정리 (+ 코드 예제)</title>
      <link>https://kirby-dev.tistory.com/entry/%EB%AA%A8%EB%93%88%ED%99%94%EC%99%80-%EC%9D%91%EC%A7%91%EB%8F%84%EA%B2%B0%ED%95%A9%EB%8F%84-%EC%99%84%EB%B2%BD-%EC%A0%95%EB%A6%AC-%EC%BD%94%EB%93%9C-%EC%98%88%EC%A0%9C</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;소프트웨어 개발에서 &lt;b&gt;좋은 설계&lt;/b&gt;를 만드는 핵심 요소 중 하나는 &lt;b&gt;'모듈화(Modularity)'&lt;/b&gt; 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모듈화가 잘된 소프트웨어는 유지보수성이 뛰어나고 재사용성이 높으며 협업에도 유리합니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 글에서는 &lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;모듈화의 개념, 응집도(Cohesion)와 결합도(Coupling)의 관계&lt;/b&gt;&lt;/span&gt;, 그리고 &lt;b&gt;좋은 설계를 위한 원칙과 코드 예제&lt;/b&gt;까지 자세히 설명해드리려고 합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. 모듈화란?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span&gt;✅ 모듈화(Modularity)의 정의&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span&gt;모듈화란 프로그램을 독립적인 여러 개의 모듈로 나누어 개발하는 기법입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span&gt;하나의 모듈은 특정한 기능을 수행하며, 다른 모듈과 최소한의 상호작용만을 갖도록 설계됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span&gt;✅ 모듈화를 적용하면 좋은 점&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;유지보수성 향상&lt;/b&gt; : 특정 모듈만 수정하면 되기에 변경이 용이함&lt;/li&gt;
&lt;li&gt;&lt;b&gt;재사용성 증가&lt;/b&gt; : 다른 프로젝트에서도 재사용이 가능함&lt;/li&gt;
&lt;li&gt;&lt;b&gt;개발 생산성 향상&lt;/b&gt; : 여러 개발자가 동시에 작업이 가능함&lt;/li&gt;
&lt;li&gt;&lt;b&gt;디버깅 용이&lt;/b&gt; : 오류 발생 시 특정 모듈만 점검하면 됨&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span&gt;2. 응집도(Cohesion)와 결합도(Coupling)&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span&gt;✅ 응집도(Cohesion)란?&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span&gt;응집도는 &lt;/span&gt;&lt;span&gt;&lt;b&gt;모듈 내부 구성 요소들이 얼마나 밀접하게 연관되어 있는지&lt;/b&gt;&lt;/span&gt;&lt;span&gt;를 나타내는 지표입니다.&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;높은 응집도 = 모듈 내부의 기능이 하나의 목적을 위해 강하게 결합&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span&gt;✅ 결합도(Coupling)란?&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span&gt;결합도는 &lt;/span&gt;&lt;span&gt;&lt;b&gt;다른 모듈과의 의존성이 얼마나 강한지&lt;/b&gt;&lt;/span&gt;&lt;span&gt;를 나타내는 지표입니다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;낮은 결합도 = 모듈이 독립적으로 동작할 수 있음&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span&gt;✅ 좋은 소프트웨어 설계를 위한 원칙&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-pm-slice=&quot;1 1 []&quot;&gt;응집도는 높이고 결합도는 낮춘다.&lt;/li&gt;
&lt;li data-pm-slice=&quot;1 1 []&quot;&gt;각 모듈이 독립적으로 동작하도록 설계해야 유지보수가 용이함&lt;/li&gt;
&lt;li data-pm-slice=&quot;1 1 []&quot;&gt;모듈 간 인터페이스를 최소화하여 변경 영향을 줄임&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;응집도가 높은 코드와 낮은 코드 표.png&quot; data-origin-width=&quot;1800&quot; data-origin-height=&quot;1020&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pI5HT/btsL360WD1t/TT8gdnAPC1jpKeUoJyiQUk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pI5HT/btsL360WD1t/TT8gdnAPC1jpKeUoJyiQUk/img.png&quot; data-alt=&quot;응집도 높은 코드 / 응집도 낮은 코드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pI5HT/btsL360WD1t/TT8gdnAPC1jpKeUoJyiQUk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpI5HT%2FbtsL360WD1t%2FTT8gdnAPC1jpKeUoJyiQUk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1800&quot; height=&quot;1020&quot; data-filename=&quot;응집도가 높은 코드와 낮은 코드 표.png&quot; data-origin-width=&quot;1800&quot; data-origin-height=&quot;1020&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;응집도 높은 코드 / 응집도 낮은 코드&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span&gt;3. 코드 예제로 이해하는 응집도와 결합도&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span&gt;  나쁜 예시: 낮은 응집도, 높은 결합도&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738311936004&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class OrderProcessor:
    def __init__(self):
        self.logger = Logger()
    
    def process_order(self, order):
        self.logger.log(&quot;Processing order...&quot;)
        # 주문 처리 로직
        print(&quot;Order processed: &quot;, order)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&lt;b&gt;문제점&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;OrderProcessor 클래스가 Logger 클래스에 직접 의존함 (높은 결합도)&lt;/li&gt;
&lt;li&gt;주문 처리와 로깅 기능이 하나의 클래스에 포함됨 (낮은 응집도)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style4&quot; /&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span&gt;✅ 개선 예시: 높은 응집도, 낮은 결합도&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738312021508&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class Logger:
    def log(self, message):
        print(f&quot;LOG: {message}&quot;)

class OrderProcessor:
    def __init__(self, logger):
        self.logger = logger  # 의존성 주입 (Dependency Injection)
    
    def process_order(self, order):
        self.logger.log(&quot;Processing order...&quot;)
        print(&quot;Order processed: &quot;, order)

# 사용 예시
logger = Logger()
order_processor = OrderProcessor(logger)
order_processor.process_order(&quot;#1234&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;&lt;span&gt;  &lt;/span&gt;&lt;span&gt;&lt;b&gt;개선점&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Logger 모듈을 외부에서 주입하여 &lt;b&gt;결합도 감소&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;OrderProcessor는 주문 처리에 집중하여 &lt;b&gt;응집도 증가&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span&gt;4. 모듈화를 잘하는 팁&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span&gt;✅ SOLID 원칙 적용&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-pm-slice=&quot;1 1 []&quot;&gt;&lt;b&gt;SRP(단일 책임 원칙)&lt;/b&gt; : 하나의 클래스는 하나의 책임만 가져야 한다.&lt;/li&gt;
&lt;li data-pm-slice=&quot;1 1 []&quot;&gt;&lt;b&gt;OCP(개방 폐쇄 원칙)&lt;/b&gt; : 기존 코드를 수정하지 않고 기능을 확장할 수 있어야 한다.&lt;/li&gt;
&lt;li data-pm-slice=&quot;1 1 []&quot;&gt;&lt;b&gt;DIP(의존 역전 원칙)&lt;/b&gt; : 상위 모듈이 하위 모듈에 직접 의존하지 않도록 인터페이스를 활용한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-pm-slice=&quot;1 1 []&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&lt;span&gt;✅ 좋은 모듈 구조 설계&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-pm-slice=&quot;1 1 []&quot;&gt;&lt;b&gt;기능별로 모듈을 분리&lt;/b&gt; (ex. UserModule, OrderModule, PaymentModule 등)&lt;/li&gt;
&lt;li data-pm-slice=&quot;1 1 []&quot;&gt;&lt;b&gt;API 설계 시 인터페이스를 활용&lt;/b&gt;하여 결합도를 낮춘다.&lt;/li&gt;
&lt;li data-pm-slice=&quot;1 1 []&quot;&gt;&lt;b&gt;공통 모듈은 별도 패키지로 관리&lt;/b&gt;하여 재사용성을 높인다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;결론.&amp;nbsp; 좋은 모듈화가 좋은 코드로 이어진다!&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;모듈화를 잘하면 유지보수와 확장이 쉬운 소프트웨어를 만들 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;✅ &lt;/span&gt;&lt;span&gt;&lt;b&gt;요약&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;응집도는 높이고 결합도는 낮춘다.&lt;/li&gt;
&lt;li&gt;SOLID 원칙을 적용하여 모듈 설계를 개선&lt;/li&gt;
&lt;li&gt;의존성 주입(DI) 등을 활용하여 모듈 간 결합도 최소화&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모듈화가 잘된 소프트웨어는 협업과 유지보수가 쉬워지고 코드 품질이 크게 향상됩니다.&lt;/p&gt;</description>
      <category>결합도</category>
      <category>공학지식</category>
      <category>모듈화</category>
      <category>모듈화와 응집도 결합도 완벽정리</category>
      <category>소프트웨어</category>
      <category>소프트웨어공학</category>
      <category>완벽 정리</category>
      <category>응집도</category>
      <category>컴퓨터공학</category>
      <category>코드 예제</category>
      <author>얌얌커비</author>
      <guid isPermaLink="true">https://kirby-dev.tistory.com/7</guid>
      <comments>https://kirby-dev.tistory.com/entry/%EB%AA%A8%EB%93%88%ED%99%94%EC%99%80-%EC%9D%91%EC%A7%91%EB%8F%84%EA%B2%B0%ED%95%A9%EB%8F%84-%EC%99%84%EB%B2%BD-%EC%A0%95%EB%A6%AC-%EC%BD%94%EB%93%9C-%EC%98%88%EC%A0%9C#entry7comment</comments>
      <pubDate>Fri, 31 Jan 2025 19:30:45 +0900</pubDate>
    </item>
    <item>
      <title>[Spring] Spring에서 JDBC와 JPA: 차이점과 선택 기준 알아보기</title>
      <link>https://kirby-dev.tistory.com/entry/Spring-Spring%EC%97%90%EC%84%9C-JDBC%EC%99%80-JPA-%EC%B0%A8%EC%9D%B4%EC%A0%90%EA%B3%BC-%EC%84%A0%ED%83%9D-%EA%B8%B0%EC%A4%80-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;JPA vs JDBC.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pIsIe/btsLV0Un9ty/gy71rUzqVEU1ABLzJEdxgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pIsIe/btsLV0Un9ty/gy71rUzqVEU1ABLzJEdxgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pIsIe/btsLV0Un9ty/gy71rUzqVEU1ABLzJEdxgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpIsIe%2FbtsLV0Un9ty%2Fgy71rUzqVEU1ABLzJEdxgK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;720&quot; data-filename=&quot;JPA vs JDBC.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;720&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;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;JDBC와 JPA는 각각 다른 방식으로 데이터베이스와 상호작용합니다.&lt;br /&gt;Spring 애플리케이션에서 데이터 접근 계층을 설계할 때, 이 둘 중 무엇을 선택해야 할지 고민하는 분들을 위해 준비했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이 글에서는 &lt;b&gt;JDBC와 JPA의 주요 차이점&lt;/b&gt;, &lt;b&gt;장단점&lt;/b&gt;, 그리고 &lt;b&gt;적절한 선택 기준&lt;/b&gt;을 살펴봅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&quot;&lt;b&gt;더 빠른 성능&lt;/b&gt;을 원하시나요?&lt;br /&gt;아니면 &lt;b&gt;생산성&lt;/b&gt;이 더 중요한가요?&quot;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size18&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;JDBC와 JPA의 정의 및 역할&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;&lt;b&gt;JDBC (Java Database Connectivity)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;정의&lt;/b&gt;: Java 표준 API로, 데이터베이스와의 직접적인 상호작용을 담당&lt;/li&gt;
&lt;li&gt;&lt;b&gt;역할&lt;/b&gt;: SQL을 직접 작성하고 실행하며, 결과를 처리하는 저수준 API&lt;/li&gt;
&lt;li&gt;&lt;b&gt;특징&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SQL에 대한 완전한 제어 가능&lt;/li&gt;
&lt;li&gt;코드량이 많고 반복 작업이 많음&lt;/li&gt;
&lt;li&gt;Spring JDBC Template 같은 도구로 생산성 보완 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;JPA (Java Persistence API)&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;정의&lt;/b&gt;: ORM(Object Relational Mapping) 표준 스펙으로, 데이터베이스와 객체 지향적으로 상호작용&lt;/li&gt;
&lt;li&gt;&lt;b&gt;역할&lt;/b&gt;: 데이터를 객체(Entity)로 매핑하여 SQL 작성을 줄이고 생산성을 높임&lt;/li&gt;
&lt;li&gt;&lt;b&gt;특징&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터베이스 독립적인 코드 작성 가능&lt;/li&gt;
&lt;li&gt;Hibernate가 대표적인 구현체&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;JDBC와 JPA의 주요 차이점&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이 섹션에서는 두 기술의 차이를 구체적으로 비교합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 96.9768%; height: 102px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 16.5891%; height: 17px;&quot;&gt;구분&lt;/td&gt;
&lt;td style=&quot;width: 36.5451%; height: 17px;&quot;&gt;JDBC&lt;/td&gt;
&lt;td style=&quot;width: 48.525%; height: 17px;&quot;&gt;JPA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 16.5891%; height: 17px;&quot;&gt;SQL 작성방식&lt;/td&gt;
&lt;td style=&quot;width: 36.5451%; height: 17px;&quot;&gt;직접 작성&lt;/td&gt;
&lt;td style=&quot;width: 48.525%; height: 17px;&quot;&gt;SQL 자동 생성 또는 JPQL 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 16.5891%; height: 17px;&quot;&gt;복잡도&lt;/td&gt;
&lt;td style=&quot;width: 36.5451%; height: 17px;&quot;&gt;높음 (수작업 필요)&lt;/td&gt;
&lt;td style=&quot;width: 48.525%; height: 17px;&quot;&gt;낮음 (자동화 수준 높음)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 16.5891%; height: 17px;&quot;&gt;성능 최적화&lt;/td&gt;
&lt;td style=&quot;width: 36.5451%; height: 17px;&quot;&gt;개발자에게 전적으로 의존함&lt;/td&gt;
&lt;td style=&quot;width: 48.525%; height: 17px;&quot;&gt;지연로딩 (Lazy Loading), 캐싱 등 자동화 기능 제공&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 16.5891%; height: 17px;&quot;&gt;데이터베이스 독립성&lt;/td&gt;
&lt;td style=&quot;width: 36.5451%; height: 17px;&quot;&gt;낮음 (DB 변경 시 SQL 수정 필요)&lt;/td&gt;
&lt;td style=&quot;width: 48.525%; height: 17px;&quot;&gt;높음 (Hibernate가 DB 변경 시도 지원)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 16.5891%; height: 17px;&quot;&gt;학습 곡선&lt;/td&gt;
&lt;td style=&quot;width: 36.5451%; height: 17px;&quot;&gt;상대적으로 짧음&lt;/td&gt;
&lt;td style=&quot;width: 48.525%; height: 17px;&quot;&gt;상대적으로 가파름&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;JDBC의 장단점&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;&lt;b&gt;장점&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;직접적인 SQL 제어로 복잡한 쿼리를 효율적으로 실행 가능&lt;/li&gt;
&lt;li&gt;모든 DBMS에서 사용할 수 있는 보편적인 방식&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;단점&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;코드의 양이 많아 유지보수가 어려움&lt;/li&gt;
&lt;li&gt;반복적인 작업이 많아 생산성이 낮음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;JPA의 장단점&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;&lt;b&gt;장점&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;객체 지향적인 데이터베이스 접근 방식 제공&lt;/li&gt;
&lt;li&gt;SQL 작성 감소로 생산성 향상&lt;/li&gt;
&lt;li&gt;캐싱 및 지연 로딩 등 고급 기능 제공&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;단점&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;학습 곡선이 가파름&lt;/li&gt;
&lt;li&gt;성능 최적화가 어렵거나, 잘못 사용할 경우 오히려 성능 저하 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;JDBC를 선택해야 하는 경우&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;프로젝트가 단순하며, SQL 쿼리가 이미 작성된 경우&lt;/li&gt;
&lt;li&gt;데이터베이스 제어를 세부적으로 직접 하고 싶은 경우&lt;/li&gt;
&lt;li&gt;데이터 모델이 단순하고, 복잡한 매핑이 필요 없는 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;JPA를 선택해야 하는 경우&lt;/b&gt;:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;객체 지향적인 설계를 선호하며, 생산성을 중시하는 경우&lt;/li&gt;
&lt;li&gt;복잡한 데이터 모델과 매핑이 필요한 경우&lt;/li&gt;
&lt;li&gt;데이터베이스 변경 가능성이 높거나, 여러 DBMS를 지원해야 하는 경우&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;짧은 개발 기간에 높은 생산성이 중요하다면 JPA를,&lt;br /&gt;이미 성능이 중요한 레거시 시스템이라면 JDBC를 추천합니다.&lt;br /&gt;&lt;/span&gt;&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;JDBC와 JPA는 각각 고유의 강점과 단점을 가진 도구입니다.&lt;br /&gt;프로젝트 요구 사항과 팀의 역량에 따라 적합한 기술을 선택하는 것이 중요합니다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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;JDBC 코드 예제&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1737536266658&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;String sql = &quot;SELECT * FROM users WHERE id = ?&quot;;
try (Connection connection = dataSource.getConnection();
     PreparedStatement ps = connection.prepareStatement(sql)) {
    ps.setInt(1, userId);
    try (ResultSet rs = ps.executeQuery()) {
        if (rs.next()) {
            System.out.println(rs.getString(&quot;name&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;&amp;nbsp;&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;JPA 코드 예제&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1737536282312&quot; class=&quot;java&quot; data-ke-language=&quot;java&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;User user = entityManager.find(User.class, userId);
System.out.println(user.getName());&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333; text-align: center;&quot;&gt;추가로 JPA 학습을 원하신다면&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333; text-align: center;&quot;&gt;Hibernate의 공식 문서를 참고하거나 Spring Data JPA를 활용해 보세요!&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;</description>
      <category>hibernate</category>
      <category>JDBC</category>
      <category>jdbc와 jpa 선택기준</category>
      <category>jdbc와 jpa의 차이점</category>
      <category>JPA</category>
      <category>Spring data JPA</category>
      <author>얌얌커비</author>
      <guid isPermaLink="true">https://kirby-dev.tistory.com/6</guid>
      <comments>https://kirby-dev.tistory.com/entry/Spring-Spring%EC%97%90%EC%84%9C-JDBC%EC%99%80-JPA-%EC%B0%A8%EC%9D%B4%EC%A0%90%EA%B3%BC-%EC%84%A0%ED%83%9D-%EA%B8%B0%EC%A4%80-%EC%95%8C%EC%95%84%EB%B3%B4%EA%B8%B0#entry6comment</comments>
      <pubDate>Wed, 22 Jan 2025 20:14:13 +0900</pubDate>
    </item>
    <item>
      <title>[ KPT 회고 ] 개발의 민족 / 딜리버리 서비스</title>
      <link>https://kirby-dev.tistory.com/entry/KPT-%ED%9A%8C%EA%B3%A0-%EA%B0%9C%EB%B0%9C%EC%9D%98-%EB%AF%BC%EC%A1%B1-%EB%94%9C%EB%A6%AC%EB%B2%84%EB%A6%AC-%EC%84%9C%EB%B9%84%EC%8A%A4</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-01-13 오후 6.21.55.png&quot; data-origin-width=&quot;1783&quot; data-origin-height=&quot;1001&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bX46O6/btsLLOzGc11/apD4Zkj8ZIN0jxuaG55uik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bX46O6/btsLLOzGc11/apD4Zkj8ZIN0jxuaG55uik/img.png&quot; data-alt=&quot;개발의 민족 프로젝트 발표 PDF 일부&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bX46O6/btsLLOzGc11/apD4Zkj8ZIN0jxuaG55uik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbX46O6%2FbtsLLOzGc11%2FapD4Zkj8ZIN0jxuaG55uik%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1783&quot; height=&quot;1001&quot; data-filename=&quot;스크린샷 2025-01-13 오후 6.21.55.png&quot; data-origin-width=&quot;1783&quot; data-origin-height=&quot;1001&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;개발의 민족 프로젝트 발표 PDF 일부&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&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;span style=&quot;color: #006dd7;&quot;&gt;Keep&lt;/span&gt; : 만족하며 지속하고자 하는 점&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Pull request 시 &lt;b&gt;2인 이상 코드리뷰&lt;/b&gt; 후, 본인 외 Merge&lt;/li&gt;
&lt;li&gt;&lt;b&gt;도메인 별 브랜치 작업&lt;/b&gt; : main, develop, feature#1, 2, 3 ... : 각 기능별 정리&lt;/li&gt;
&lt;li&gt;프로젝트 시작 전, &lt;b&gt;컨벤션 규칙 정리&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;code with me 와 같은 &lt;b&gt;페어프로그래밍&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;Problem&lt;/span&gt; : 불편하기에 개선이 필요하다고 생각되는 점&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;브랜치 전략&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;브랜치 작업 관련해서 미리 대화를 나눴지만, 사실 현재 작업한 우리의 브랜치를 살펴보면 각자 개인의 스타일이 담겨있다. 예를 들어 폴더 구조 안에 브랜치를 생성하거나, 폴더 구조 없이 브랜치를 생성하는 등 개인의 차이가 있었다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-01-13 오후 6.12.57.png&quot; data-origin-width=&quot;1306&quot; data-origin-height=&quot;547&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b90WOS/btsLMVLr867/pa6Ud0VKk1xbPv3NAcQPsk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b90WOS/btsLMVLr867/pa6Ud0VKk1xbPv3NAcQPsk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b90WOS/btsLMVLr867/pa6Ud0VKk1xbPv3NAcQPsk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb90WOS%2FbtsLMVLr867%2Fpa6Ud0VKk1xbPv3NAcQPsk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1306&quot; height=&quot;547&quot; data-filename=&quot;스크린샷 2025-01-13 오후 6.12.57.png&quot; data-origin-width=&quot;1306&quot; data-origin-height=&quot;547&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;API 명세와 실제 작업의 차이&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시간적 여유가 없는 상황에서 이 부분까지 수정하기에 번거롭지 않을까 싶어서 살짝 넘기고 지나간 부분이 있다. '수정' 기능의 API를 만들 때 API 명세에는 PATCH로 작업했는데 실제 작업물에는 PUT으로 작업되어있는 점을 확인할 수 있다.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-01-13 오후 6.16.58.png&quot; data-origin-width=&quot;257&quot; data-origin-height=&quot;392&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnauPK/btsLM5AiSvi/60bGj2ZHIAOQkUzgb7AjG0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnauPK/btsLM5AiSvi/60bGj2ZHIAOQkUzgb7AjG0/img.png&quot; data-alt=&quot;API 명세 예시&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnauPK/btsLM5AiSvi/60bGj2ZHIAOQkUzgb7AjG0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnauPK%2FbtsLM5AiSvi%2F60bGj2ZHIAOQkUzgb7AjG0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;257&quot; height=&quot;392&quot; data-filename=&quot;스크린샷 2025-01-13 오후 6.16.58.png&quot; data-origin-width=&quot;257&quot; data-origin-height=&quot;392&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;API 명세 예시&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2025-01-13 오후 6.17.41.png&quot; data-origin-width=&quot;446&quot; data-origin-height=&quot;154&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sFXfU/btsLKJ62Z9y/k57vq6hel0h6qSb79dq370/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sFXfU/btsLKJ62Z9y/k57vq6hel0h6qSb79dq370/img.png&quot; data-alt=&quot;PUT으로 설정된 예시 코드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sFXfU/btsLKJ62Z9y/k57vq6hel0h6qSb79dq370/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsFXfU%2FbtsLKJ62Z9y%2Fk57vq6hel0h6qSb79dq370%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;446&quot; height=&quot;154&quot; data-filename=&quot;스크린샷 2025-01-13 오후 6.17.41.png&quot; data-origin-width=&quot;446&quot; data-origin-height=&quot;154&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;PUT으로 설정된 예시 코드&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;Try&lt;/span&gt; : Problem의 해결책 또는 실행가능한 점&lt;/b&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;브랜치 전략 재수립&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문제가 되는 부분은 아니지만, 통일성이 부족해보여서 폴더구조에 넣거나 폴더구조를 이용하지 않는 등에 대한 부분을 미리 확실하게 규칙을 정해두고 작업을 시작하는 것이 좋다고 생각되었다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b&gt;API 명세 리마인드&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;API 명세를 코드에 맞춰 변경하기보단, API 명세에 맞춰 코드를 작성하는 것을 연습하는 편이 실무에 도움이 될 것이라는 생각이 들었다. 기획자가 만든 요구사항을 변경하는 일은 쉽지 않을 것이라 생각되었기에, 미리 대화를 나눠 API 명세를 수정하고나서 개발을 진행하거나 요구사항대로 진행하는 편이 좋을 것 같다고 생각되었다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;개발의 민족 딜리버리 서비스 GitHub 바로가기&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;&amp;darr;&lt;b&gt;&amp;darr;&lt;/b&gt;&lt;b&gt;&amp;darr;&lt;/b&gt;&lt;b&gt;&amp;darr;&lt;/b&gt;&lt;b&gt;&amp;darr;&lt;/b&gt;&lt;b&gt;&amp;darr;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1736760285539&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - delivery-6/delivery-app&quot; data-og-description=&quot;Contribute to delivery-6/delivery-app development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/delivery-6/delivery-app&quot; data-og-url=&quot;https://github.com/delivery-6/delivery-app&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/AAJxt/hyX0ldLp9X/YauoCMefKgrOOyJEX7KRu1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/c8PtjJ/hyX0uPiP1P/46jxSqcbYZAs8jkg0mkz81/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/delivery-6/delivery-app&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/delivery-6/delivery-app&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/AAJxt/hyX0ldLp9X/YauoCMefKgrOOyJEX7KRu1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/c8PtjJ/hyX0uPiP1P/46jxSqcbYZAs8jkg0mkz81/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - delivery-6/delivery-app&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Contribute to delivery-6/delivery-app development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Keep</category>
      <category>kpt 회고</category>
      <category>problem</category>
      <category>TRY</category>
      <category>프로젝트 회고</category>
      <category>회고</category>
      <author>얌얌커비</author>
      <guid isPermaLink="true">https://kirby-dev.tistory.com/5</guid>
      <comments>https://kirby-dev.tistory.com/entry/KPT-%ED%9A%8C%EA%B3%A0-%EA%B0%9C%EB%B0%9C%EC%9D%98-%EB%AF%BC%EC%A1%B1-%EB%94%9C%EB%A6%AC%EB%B2%84%EB%A6%AC-%EC%84%9C%EB%B9%84%EC%8A%A4#entry5comment</comments>
      <pubDate>Mon, 13 Jan 2025 18:27:24 +0900</pubDate>
    </item>
    <item>
      <title>개발자가 더 큰 성장을 이루는 방법 (Feat. 교육자 관점)과 나의 성장 목표와 다짐</title>
      <link>https://kirby-dev.tistory.com/entry/%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-%EB%8D%94-%ED%81%B0-%EC%84%B1%EC%9E%A5%EC%9D%84-%EC%9D%B4%EB%A3%A8%EB%8A%94-%EB%B0%A9%EB%B2%95-Feat-%EA%B5%90%EC%9C%A1%EC%9E%90-%EA%B4%80%EC%A0%90%EA%B3%BC-%EB%82%98%EC%9D%98-%EC%84%B1%EC%9E%A5-%EB%AA%A9%ED%91%9C%EC%99%80-%EB%8B%A4%EC%A7%90</link>
      <description>&lt;p data-ke-size=&quot;size14&quot;&gt;다양하고 많은 &lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;신입&amp;middot;예비 개발자&lt;/b&gt;&lt;/span&gt;분들과 &lt;b&gt;'우아한형제들&lt;/b&gt;&lt;span style=&quot;color: #666666;&quot;&gt;(배달의 민족)&lt;/span&gt;&lt;b&gt;'의 서준수&lt;/b&gt; 연사자님의 세션을 공유하고 싶어서 적어보게 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;(세션 내용 중에 개발자들은 공유하는 것을 좋아한다는 내용도 있었는데 듣고 오! 하면서 좋아했답니다)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&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;size14&quot;&gt;&lt;b&gt;메타인지&lt;/b&gt;란 생각에 대한 생각으로 &lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;'학습자가 자신의 학습 방법이 효과적이지 않다는 것을 인식하는 것'&lt;/b&gt;&lt;/span&gt; 이라고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;효과적이지 않은 학습방법을 개선하려면 &lt;b&gt;'성장 마인드셋'&lt;/b&gt;이 필요합니다. &lt;span style=&quot;color: #666666;&quot;&gt;(성장 마인드셋의 반대는 고정 마인드셋)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;서준수 연사자님은 주변에 존재하는 재능있는 사람들을 보고 &lt;b&gt;'나는 그런 부류가 아니다'&lt;/b&gt; 생각되어&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;나의 모자람을 늘 인지했기에 학습에 대한 필요성을 느끼게 했다고 합니다. &lt;span style=&quot;color: #9d9d9d;&quot;&gt;(메타인지와 성장마인드셋)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;주변에 있는 좋은 동료에게 배우는 것도 좋지만, 학습할 수 있는 분위기의 회사인지도 중요하며 그런 분위기가 아닐 경우,&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;내게 주어진 환경을 바꿔 외부의 스터디나 커뮤니티&lt;/b&gt;&lt;/span&gt;를 알아보는 것을 권장했습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;SI업체는 개발자의 무덤이다?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;요즘 몇몇 분들이 SI업체는 개발자의 무덤이라 더이상 성장하지 못한다고 말합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;하지만, 다루는 기술의 종류가 다를 뿐, 개발이 아닌 것이 아니기 때문에 폄하되어서는 안됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;속히 말하는 네&amp;middot;카&amp;middot;라&amp;middot;쿠&amp;middot;배&amp;middot;당&amp;middot;토 만이 교육을 잘 받을 수 있는 곳인 것이 아닙니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;업무 자체에서 배울 수 있는 것에 집중&lt;/b&gt;해야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;또한, 물경력 탓만 하고 바뀌려고 해서는 바뀌는 것이 없을 것이며 성장하기 어려운 환경이라 느끼면 별도의 노력을 해야합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;환경 탓만 하는 것은 본인이 열심히 하지 않을 핑계일 뿐이고 뭐라도 할 수 있는 것은 해보려고 해야합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;연사자님의 경우, 나랑 관련있는 언어니까 한 번 해볼까? 싶어서 사용해본 후, 블로그에 글을 남겼는데 출판사에서 연락이 왔다고 합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&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;size14&quot;&gt;공부한 것을 그냥 블로그에 적는 것은 재미가 없을 수 있습니다. 누군가 봐준다면 재밌게 적어서 올릴 수 있을 것 같아서 아무도 안보더라도 개발자 커뮤니티에 올려보기 시작했습니다. 내용이 전문적이지 못하더라도 용기를 내서 올려보았고, 역시나 글을 읽어주지 않았습니다. 하지만, 공유를 한다는게 &lt;b&gt;'헬퍼스 하이'&lt;/b&gt; 현상으로 통해 기분이 좋아져 계속 하게 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;헬퍼스 하이 현상이란&lt;/b&gt; : 사람들은 보통 타인에게 도움을 주거나 도움을 주었다고 생각할 때 기분이 좋아진다고 합니다. 그러한 현상을 말함&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;과거의 나를 돕는다는 생각&lt;/span&gt;으로 시작하게 되었는데&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;검색, 책을 통해 얻는 정보는 모두 누군가의 발자취&lt;/li&gt;
&lt;li&gt;후발대에게 조금 더 좋은 길로 안내하고자 하는 마음&lt;/li&gt;
&lt;li&gt;그러한 행동은 모두 내적동기에 의한 것일 가능성이 높음&lt;/li&gt;
&lt;li&gt;내가 잘하는 사람이 아니기 때문에 &lt;b&gt;나와 같은 고통을 겪지 않길 바라는 마음&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;결국 나에게도 복습이 되며 공부가 되기에 스스로에게도 도움이 되는 선순환&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;개발자들은 공유를 참 좋아한다&lt;/span&gt;고 생각하는데&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;타인을 경쟁자가 아닌 함께 성장하는 동료로 보는 것 &lt;span style=&quot;color: #9d9d9d;&quot;&gt;(경쟁자라고 생각하면 성장 마인드셋이 갖춰진 것이 아니다)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;개발자들은 공유 문화에 아주 익숙하다 &lt;span style=&quot;color: #9d9d9d;&quot;&gt;(오픈 소스와 각종 개발자 모임, 행사를 보면 알 수 있다)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;커리큘럼 설계&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;본인이 학습하던 때를 생각해보자&lt;/li&gt;
&lt;li&gt;학습 목록 작성&lt;/li&gt;
&lt;li&gt;모르는 영역이기 때문에 커리큘럼을 만들기가 쉽지 않음&lt;/li&gt;
&lt;li&gt;잘짜인 커리큘럼의 도움을 받음 &lt;span style=&quot;color: #9d9d9d;&quot;&gt;(책이나 강의 등)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;커리큘럼을 직접 만들어보기&lt;/li&gt;
&lt;li&gt;본인의 강점과 약점 파악 가능&lt;/li&gt;
&lt;/ul&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;본인이 학습할 때보다 다른 점은 책임감이 부여됨 &lt;span style=&quot;color: #9d9d9d;&quot;&gt;(그들의 시간을 뺏는 느낌이 들어서 더욱 알차게 만들게 됨)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;기술 트렌드 파악 &lt;span style=&quot;color: #9d9d9d;&quot;&gt;(각각 현업의 개발자에게 물어보며 조사하게 됨)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;효율적이고 효과적인 방법에 대해 고민하게 됨 &lt;span style=&quot;color: #9d9d9d;&quot;&gt;(주어진 시간에 효과적으로 해야한다는 생각이 들게 됨)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이러한 생각 자체가 나 자신을 성장 시키기도 하고 누군가를 가르치는 것은 자신을 가르치는 최고의 방법이라고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;'교육자'의 관점으로 보면 혼자 학습할 때에는 간과하기 쉬운 부분과 교육하기 쉽지 않다고 느껴지는 포인트를 발견할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;논리적인 프로그래밍에 암묵지가?&lt;/li&gt;
&lt;li&gt;경험을 통해 자신도 모르게 축적됨&lt;/li&gt;
&lt;li&gt;초보자 입장에선 : ????????????&lt;/li&gt;
&lt;li&gt;그렇게 되면 나도 : ???????????&lt;/li&gt;
&lt;li&gt;의식적으로 챙겨야만 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;상대방이 물어봤을 때 난 대답할 수 있는가? &amp;rarr; 교육을 하기 위한 노력을 해라 &amp;rarr; 결국 내가 더욱 잘 성장하게 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;개구리 올챙이적 생각 못한다.&lt;/li&gt;
&lt;li&gt;교육생 수준은 모두 다르다.&lt;/li&gt;
&lt;li&gt;어느 기준에 맞출지, 필요한 난이도는? 이걸 지금 알아야할까? 이건 어디까지 알아야할까?&lt;/li&gt;
&lt;li&gt;어디까지 설명해야할지에 대해서 고민하는 것도 굉장한 능력이다. (핵심을 찾아내는 능력)&lt;/li&gt;
&lt;li&gt;예비 개발자를 교육할 때 '지금 이걸 알아야할까?' 라는 고민을 굉장히 많이 하게 된다.&lt;/li&gt;
&lt;/ul&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;한 사람이 모든 것을 알 수 없다.&lt;/li&gt;
&lt;li&gt;아는 것만 가르칠 수 없다.&lt;/li&gt;
&lt;li&gt;새로운 기술은 계속 등장한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;그래서 교육하는 것만으로도 역량이 강화되며 개발자가 교육을 하면 개발자의 성장이 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;내가 스터디를 열어 강사를 해보면 분명히 성장의 요인이 될 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;교육생에게 피드백 주고 받기&lt;/li&gt;
&lt;li&gt;누군가는 피드백을 두려워한다. &lt;span style=&quot;color: #9d9d9d;&quot;&gt;(동료에게 먼저 받아보자. 동료가 두렵다면 두려워하지 않을 노력을 해보자)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;혼자서는 피드백을 받을 수 없다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;피드백은 성장을 위한 훌륭한 밑거름이 되기에 반드시 필요합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&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;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;추천 학습방법&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;수업 설계는 학습과 깊은 관련이 있다.&lt;/li&gt;
&lt;li&gt;배우기 어려울수록 오래 기억된다.&lt;/li&gt;
&lt;li&gt;A, B, C, D 단계로 나눠 암기하고 연습하는 것이 중요하다&lt;/li&gt;
&lt;li&gt;간단한 시험을 통한 훈련과 연습에 변화를 줘라&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;인출, 정교화, 생성 반추가 필요하다&lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp;&lt;/span&gt;&amp;rarr; 기억을 하게 만드는 요소&lt;/b&gt;&lt;/span&gt;가 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;추천 도서&lt;/b&gt; : 어떻게 공부할 것인가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;많은 학습자들이 실수를 실패로 받아들인다.&lt;/li&gt;
&lt;li&gt;실수를 피하기 위해 감당할 수 있는 것만 하려고 한다.&lt;/li&gt;
&lt;li&gt;실수를 바로 잡아주는 피드백과 병행이 필요하다.&lt;/li&gt;
&lt;li&gt;바람직한 어려움이 중요하다. &lt;span style=&quot;color: #9d9d9d;&quot;&gt;(너무 어려우면 완전한 좌절을 만들어내기 때문에 그 사람이 할 수 있는 수준이지만 어려운 정도로 시작해야한다.)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;결론 : 난이도 있는 과제와 코드리뷰가 중요합니다.&lt;/li&gt;
&lt;/ul&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;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;학습한 내용을 기억해내는 과정&lt;/li&gt;
&lt;li&gt;기억하는 것보다 기억을 인출하는 과정이 중요하다.&lt;/li&gt;
&lt;li&gt;'일단 해보기'는 인출할 지식이 없다.&lt;/li&gt;
&lt;li&gt;지식 쌓기와 병행햐아하는 이유를 알아야한다.&lt;/li&gt;
&lt;li&gt;반복이 중요하다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;가장 효과가 큰 인출 연습은 나중에 그 지식을 가지고 진짜 하게될 일을 반영해보는 연습입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;(반복하면서 기술로 쌓은 것을 다시 인출하는 것을 반복해야만 함)&lt;/span&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;실제 교육 방식&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;티칭보다는 코칭을&lt;/li&gt;
&lt;li&gt;미션 기반의 야생적인 학습&lt;/li&gt;
&lt;li&gt;토론 문화 : 집단 지성의 힘&lt;/li&gt;
&lt;li&gt;인터뷰&lt;/li&gt;
&lt;li&gt;쓰고 말하고&lt;/li&gt;
&lt;li&gt;페어 프로그래밍&lt;/li&gt;
&lt;li&gt;코드 리뷰&lt;/li&gt;
&lt;li&gt;회고&lt;/li&gt;
&lt;li&gt;팀 프로젝트 : 협업&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&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;size14&quot;&gt;지금까지의 내용을 자신에게 적용해보는 것을 권장합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;효과적으로 가르치는 방법은 효과적으로 학습하는 방법이기 때문에 관점을 바꿔서 공부를 해보는 것을 추천합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;지금까지는 성장하는 방법에 대해 고민했다면, 앞으로는 무엇을 위한 성장을 할 것인가에 대한 고민이 필요&lt;/b&gt;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-12-29 오전 12.16.04.png&quot; data-origin-width=&quot;1526&quot; data-origin-height=&quot;944&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bniVpl/btsLBKceI1J/KZEvJHnrT5TCPVboFs5qDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bniVpl/btsLBKceI1J/KZEvJHnrT5TCPVboFs5qDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bniVpl/btsLBKceI1J/KZEvJHnrT5TCPVboFs5qDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbniVpl%2FbtsLBKceI1J%2FKZEvJHnrT5TCPVboFs5qDk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1526&quot; height=&quot;944&quot; data-filename=&quot;스크린샷 2024-12-29 오전 12.16.04.png&quot; data-origin-width=&quot;1526&quot; data-origin-height=&quot;944&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #3a4954; text-align: start;&quot;&gt;나의 성장 목표와 다짐&lt;/span&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;앞으로는 무엇을 위한 성장을 할 것인가에 대하여 고민을 하다보니, &lt;b&gt;개발자의 꿈을 키우며 목표로 삼았던 몇가지&lt;/b&gt;가 떠올라 적어봅니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;아버지가 한 쪽 눈을 실명하셔서 시각 장애인이신데 뇌경색이 찾아오면서 남은 한 쪽 눈 마저 안보이는 경우가 종종 생기기 시작했습니다. 아버지는 밭에서 작물을 키워 성장하는 모바일 게임과 중국 무협 영화 시청, 인터넷으로 레시피와 아이쇼핑, 글로 정리하는 것을 정말 좋아하시는데 양쪽 눈이 안보이는 날이 오면 이전의 삶과 확연히 다른 삶을 마주하며 힘들어하실 모습을 떠올리게 되었고, 한 쪽 눈으로라도 볼 수 있던 지금과 다르지 않은 평범한 날을 살아가실 수 있도록 개발하는 사람이 되고자 시작하게 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;뇌경색이 찾아오기 전에도 남은 눈의 시야가 흐려진다는 이야기를 종종 들었는데 그 때에는 함께 &lt;b&gt;점자 공부&lt;/b&gt;를 해보려는 생각만 있었고 다른 방법은 떠오르지 않았습니다. 하지만 html과 css, 스크린 리더기를 접하며 &lt;b&gt;스크린 리더기 사용법&lt;/b&gt;을 함께 배우며 스크린 리더기 하나만으로도 사이트를 이전과 유사하게 사용할 수 있다는 것을 알게 되어 각 태그를 올바르게 사용하는 방법에 대해 고민하며 공부하게 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이후 &lt;b&gt;세상에 영향력을 끼칠 수 있는 사람&lt;/b&gt;이 되려면, 아버지와 유사한 &lt;b&gt;불편함을 느끼고 있거나 느끼게 될 불특정다수를 위한 서비스&lt;/b&gt;를 만들고자 합니다. 그러기 위해서는 많은 정보를 알아야하고 다양한 경험이 필요합니다. 단순히 시각장애에 국한된 서비스가 아닌 여러 방면으로 도움을 줄 수 있는 서비스를 기획하고 만들어낼 수 있는 사람이 되고자합니다. 도움이 되는 서비스를 만드려면 웹, 게임, 앱 모두 어느정도 지식을 갖춰야 프로젝트 구성을 할 수 있으리라 생각하기에 최대한 닿는데까지 노력하여 이뤄내고 싶습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;차별받는 경우나 사람없이 모두가 똑같진 않더라도 유사하게, 행복을 느끼고 누릴 수 있는 세상이 되도록 돕는 사람&lt;/b&gt;&lt;/span&gt;이 되고 싶습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;그런 사람이 되기 위한 과정이 블로그에 많이 올라갈 예정이오니 많은 관심과 응원 부탁드립니다  &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>devfest</category>
      <category>개발자 성장</category>
      <category>개발자페스티벌</category>
      <category>교육자</category>
      <category>성장목표</category>
      <category>성장방향</category>
      <category>신입 개발자</category>
      <category>예비 개발자</category>
      <author>얌얌커비</author>
      <guid isPermaLink="true">https://kirby-dev.tistory.com/4</guid>
      <comments>https://kirby-dev.tistory.com/entry/%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-%EB%8D%94-%ED%81%B0-%EC%84%B1%EC%9E%A5%EC%9D%84-%EC%9D%B4%EB%A3%A8%EB%8A%94-%EB%B0%A9%EB%B2%95-Feat-%EA%B5%90%EC%9C%A1%EC%9E%90-%EA%B4%80%EC%A0%90%EA%B3%BC-%EB%82%98%EC%9D%98-%EC%84%B1%EC%9E%A5-%EB%AA%A9%ED%91%9C%EC%99%80-%EB%8B%A4%EC%A7%90#entry4comment</comments>
      <pubDate>Sun, 29 Dec 2024 00:16:51 +0900</pubDate>
    </item>
    <item>
      <title>DevFest Songdo/Incheon 2024</title>
      <link>https://kirby-dev.tistory.com/entry/DevFest-SongdoIncheon-2024</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;9052b046-4070-483f-99db-20a48c52a982.gif&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;540&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWZvzY/btsLp6O0xWW/nqkh7Be2y4Xi9q8tHl0RF0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWZvzY/btsLp6O0xWW/nqkh7Be2y4Xi9q8tHl0RF0/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWZvzY/btsLp6O0xWW/nqkh7Be2y4Xi9q8tHl0RF0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/bWZvzY/btsLp6O0xWW/nqkh7Be2y4Xi9q8tHl0RF0/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;455&quot; height=&quot;341&quot; data-filename=&quot;9052b046-4070-483f-99db-20a48c52a982.gif&quot; data-origin-width=&quot;720&quot; data-origin-height=&quot;540&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;GDG Devfast Incheon / Songdo 2024 다녀오다!&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;IT, 전자, 개발 관련 세션이나 세미나, 페스티벌, 전시&lt;/b&gt; 등에 대한 정보를 찾아보고 직접 다녀온 것은 이번이 2번째랍니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이전에는 &lt;b&gt;한국전자전 KES2024&lt;/b&gt;에 다녀왔는데 해당 내용은 다른 블로그에 남겨놓아서 여기에도 다시 적어보도록 하겠습니다.  &lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;인천 송도 Devfest.jpg&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;4248&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biAuvT/btsLrzCPPh1/kLaR3TY9RwR487GNAKyjCk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biAuvT/btsLrzCPPh1/kLaR3TY9RwR487GNAKyjCk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biAuvT/btsLrzCPPh1/kLaR3TY9RwR487GNAKyjCk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiAuvT%2FbtsLrzCPPh1%2FkLaR3TY9RwR487GNAKyjCk%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;420&quot; height=&quot;4248&quot; data-filename=&quot;인천 송도 Devfest.jpg&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;4248&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;가는 길에 수시로 도로사정이 안좋아져서 13시 45분에 도착하게 되어 &lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;2차 세션 &lt;/b&gt;&lt;/span&gt;부터 듣게 되었습니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;1차 세션에서는 &lt;b&gt;'컨테이너 친화적인 자바 어플리케이션 만들기'&lt;/b&gt;였는데 GDG측에서 강연자님께 여쭤보고 장표 제공이 가능하다면 보내주신다고 하셔서 아쉬운 마음을 뒤로하고 2차 세션 중 &lt;b&gt;'엄마, Dokerfile 없이 컨테이너 이미지 만들 수 있대요!'&lt;/b&gt; 를 듣고 3차 세션은 &lt;b&gt;'개발자가 더 큰 성장을 이루는 방법 (Feat. 교육자 관점)'&lt;/b&gt; 을 선택했습니다. 4차 세션은 듣고 싶던 세션이 따로 있었지만, 신청하지 않은 멘토링에 해당되어 &lt;b&gt;'스프링 시큐리티 로그인 7일 실무 적응기&lt;/b&gt;'를 선택했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;프로젝트 과제를 앞두고 다녀오게된 세미나라서 부담감이 조금 느껴졌지만, &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;굉장히 도움되고 많은 인사이트를 받게 되어 좋은 경험&lt;/b&gt;&lt;/span&gt;이 되었다고 생각합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;DevFest 2024.12.21(토)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-12-21 오후 10.27.17.png&quot; data-origin-width=&quot;1772&quot; data-origin-height=&quot;1372&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wsSN7/btsLrlER4U4/Kv7akjKwu9YpYp0RV8fanK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wsSN7/btsLrlER4U4/Kv7akjKwu9YpYp0RV8fanK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wsSN7/btsLrlER4U4/Kv7akjKwu9YpYp0RV8fanK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwsSN7%2FbtsLrlER4U4%2FKv7akjKwu9YpYp0RV8fanK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;633&quot; height=&quot;490&quot; data-filename=&quot;스크린샷 2024-12-21 오후 10.27.17.png&quot; data-origin-width=&quot;1772&quot; data-origin-height=&quot;1372&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;송도 컨벤시아 2층과 3층&lt;/b&gt;에서 진행한다는 내용만 있어서 &lt;b&gt;회의장&lt;/b&gt;과 전시장 중에서 어디로 가야할지&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;조금 어려웠지만 &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;GDG 단체카톡방&lt;/b&gt;&lt;/span&gt;에 여쭤보고 무사히 잘 도착할 수 있었습니다 !&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;지금 생각해보니 전시장보다는 회의장이 적합한데 왜 어려워했는지.. 많이 당황했던 것 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-12-21 오후 10.30.43.png&quot; data-origin-width=&quot;1026&quot; data-origin-height=&quot;948&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYnsZ3/btsLqNIrg2l/NIUd8pr9aAh8q9WnmwUgB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYnsZ3/btsLqNIrg2l/NIUd8pr9aAh8q9WnmwUgB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYnsZ3/btsLqNIrg2l/NIUd8pr9aAh8q9WnmwUgB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYnsZ3%2FbtsLqNIrg2l%2FNIUd8pr9aAh8q9WnmwUgB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;492&quot; height=&quot;948&quot; data-filename=&quot;스크린샷 2024-12-21 오후 10.30.43.png&quot; data-origin-width=&quot;1026&quot; data-origin-height=&quot;948&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;개발자의 한 해 마무리는 DevFest에서!&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;길을 따라 들어가려던 차, 전광판 내용이 바뀌어서 후딱 찍어봤습니다  &lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;다양한 개발 경험을 가진 연사자분들의 세션들과 시니어 멘토분들의 소그룹 멘토링까지! &lt;/b&gt;&lt;/span&gt;정말 많은 인사이트를 얻어온 것이 다시 한 번 떠오르네요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;데브페스트.png&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ddS7Vs/btsLrhJaRyH/pyjLSFMvC9e3xp2lFxkD9k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ddS7Vs/btsLrhJaRyH/pyjLSFMvC9e3xp2lFxkD9k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ddS7Vs/btsLrhJaRyH/pyjLSFMvC9e3xp2lFxkD9k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FddS7Vs%2FbtsLrhJaRyH%2FpyjLSFMvC9e3xp2lFxkD9k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1200&quot; data-filename=&quot;데브페스트.png&quot; data-origin-width=&quot;2000&quot; data-origin-height=&quot;1200&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;각 회의실 마다 &lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;진행되는 일정을 다시 확인&lt;/b&gt;&lt;/span&gt;할 수 있도록 배너를 설치해주신 덕에 실수없이 들어갈 수 있었습니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;저는 전 날 밤에 &lt;b&gt;어떤 세션을 들을지 회의실 호수를 메모장에 적어놓아서 세션 끝나자마자 다음 세션이 진행될 회의실로 이동&lt;/b&gt;했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;그렇게 움직이지 않으면 자리가 없어서 곤란한 상황이 발생하는 것을 깨닫고 바로 바로 움직이게 되었습니다  &lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-12-21 오후 10.42.34.png&quot; data-origin-width=&quot;1814&quot; data-origin-height=&quot;1004&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tBVUi/btsLtrXZSfC/pT5ep7HnhE3GdczXARdb9K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tBVUi/btsLtrXZSfC/pT5ep7HnhE3GdczXARdb9K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tBVUi/btsLtrXZSfC/pT5ep7HnhE3GdczXARdb9K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtBVUi%2FbtsLtrXZSfC%2FpT5ep7HnhE3GdczXARdb9K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1814&quot; height=&quot;1004&quot; data-filename=&quot;스크린샷 2024-12-21 오후 10.42.34.png&quot; data-origin-width=&quot;1814&quot; data-origin-height=&quot;1004&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;첫 세션은 &lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;Microsoft사의 유저스틴&lt;/b&gt;&lt;/span&gt; 연사자님의 &lt;b&gt;'엄마! Dokerfile 없어도 컨테이너 이미지 만들 수 있대요!'&lt;/b&gt;.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;세션을 듣다가 알게된 것은 첫 페이지 우측에 연사자님의 사진이 큼지막하게 들어간다는 것입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;뭔가 귀엽기도하고 잊을 수 없게하는 요소인 것 같다고 느꼈습니다 하핫&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-12-21 오후 10.59.26.png&quot; data-origin-width=&quot;1564&quot; data-origin-height=&quot;850&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dobvHO/btsLrbWzm2Z/l3JfYIa6Fwkenl2d5k3p3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dobvHO/btsLrbWzm2Z/l3JfYIa6Fwkenl2d5k3p3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dobvHO/btsLrbWzm2Z/l3JfYIa6Fwkenl2d5k3p3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdobvHO%2FbtsLrbWzm2Z%2Fl3JfYIa6Fwkenl2d5k3p3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;562&quot; height=&quot;850&quot; data-filename=&quot;스크린샷 2024-12-21 오후 10.59.26.png&quot; data-origin-width=&quot;1564&quot; data-origin-height=&quot;850&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;유저스틴 연사자님의 세션은 &lt;b&gt;Doker를 이해했을 때 직접 활용해보고 글을 다듬어서 공유&lt;/b&gt;드리려고 합니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;아직 Doker를 사용해보지 않았기에 미리 알아보자!&lt;/b&gt; 하는 마음으로 참여했는데 &lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;Doker를 사용해보지 않은 개발자도 &lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;충분히 이해하기 쉽게끔 이야기&lt;/b&gt;&lt;/span&gt;해주셔서 감사한 마음으로 들으며 열심히 노션에 적어내렸습니다.  &amp;zwj; &lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;(꼭 찍어가야한다고 말씀주신 내용은 바로 찹찹 찍어왔습니다! 기대해주세요!)&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-12-21 오후 11.03.36.png&quot; data-origin-width=&quot;1750&quot; data-origin-height=&quot;1050&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TgkYV/btsLtdZTIDX/zkfCKHTOw27LaDDXoLmMs0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TgkYV/btsLtdZTIDX/zkfCKHTOw27LaDDXoLmMs0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TgkYV/btsLtdZTIDX/zkfCKHTOw27LaDDXoLmMs0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTgkYV%2FbtsLtdZTIDX%2FzkfCKHTOw27LaDDXoLmMs0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1750&quot; height=&quot;1050&quot; data-filename=&quot;스크린샷 2024-12-21 오후 11.03.36.png&quot; data-origin-width=&quot;1750&quot; data-origin-height=&quot;1050&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;두번째 세션은 &lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;우아한형제들(배달의 민족)의 서준수&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;연사자님의 &lt;/span&gt;&lt;b&gt;'개발자가 더 큰 성장을 이루는 방법 (feat. 교육자 관점)'&lt;/b&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;오늘 참여한 3가지 세션 중, 예비 백엔드 개발자로서 &lt;b&gt;가장 인상깊고 깊은 울림&lt;/b&gt;을 주셨던 기억이 강하게 남습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-12-21 오후 11.05.56.png&quot; data-origin-width=&quot;1776&quot; data-origin-height=&quot;974&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tlbkN/btsLrMWnWQv/wiec34O56HYtSGqh5kIdY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tlbkN/btsLrMWnWQv/wiec34O56HYtSGqh5kIdY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tlbkN/btsLrMWnWQv/wiec34O56HYtSGqh5kIdY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtlbkN%2FbtsLrMWnWQv%2Fwiec34O56HYtSGqh5kIdY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1776&quot; height=&quot;974&quot; data-filename=&quot;스크린샷 2024-12-21 오후 11.05.56.png&quot; data-origin-width=&quot;1776&quot; data-origin-height=&quot;974&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;연사자님의 강의를 듣고 앞으로 배울 커리큘럼에 있는 '코틀린'은 반드시 서준수 연사자님의 강의와 책을 봐야겠다는 확신이 들었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;자세한 내용은 연사자님의 강연 내용을 정리해서 내일 공유드려보려고 합니다. 정말 끝내주니까 꼭 기다려주시길 바랍니다 !&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;두번째 세션에서는 &lt;b&gt;'이렇게 생각하면 더욱 탄탄하게 성장하겠구나'&lt;/b&gt;, &lt;b&gt;'공부방향이나 방식이 많이 틀렸었구나'&lt;/b&gt;를 깨달았기에 조금 부끄럽지만, 한 층 더 성장할 수 있었다고 생각합니다. 요즘 가장 많이 힘들어하는 부분이 있었는데 &lt;b&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;연사자님의 마인드셋과 방식을 적용&lt;/span&gt;&lt;/b&gt;해보면 좋겠다는 생각이 강하게 들었고 &lt;b&gt;모두에게 공유하면 좋겠다&lt;/b&gt;는 생각이 강렬해서 세세하게 적어서 공유드려볼 예정입니다 ✍️ &lt;span style=&quot;color: #9d9d9d;&quot;&gt;(오늘은 예고편이랍니다)&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-12-21 오후 11.12.38.png&quot; data-origin-width=&quot;1838&quot; data-origin-height=&quot;1180&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ALd2c/btsLtIehgoG/KAGIr2K8BY7nQ72TADsKVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ALd2c/btsLtIehgoG/KAGIr2K8BY7nQ72TADsKVk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ALd2c/btsLtIehgoG/KAGIr2K8BY7nQ72TADsKVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FALd2c%2FbtsLtIehgoG%2FKAGIr2K8BY7nQ72TADsKVk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1838&quot; height=&quot;1180&quot; data-filename=&quot;스크린샷 2024-12-21 오후 11.12.38.png&quot; data-origin-width=&quot;1838&quot; data-origin-height=&quot;1180&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;세번째 세션은 &lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;에어프레미아랩스의 송수혁&lt;/b&gt;&lt;/span&gt; 연사자님의 &lt;b&gt;'Spring Security 로그인 7일 실무 적응기'&lt;/b&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;원래 참여하려던 세션이 신청하는 것을 잊었던 멘토링 세션이라 2순위로 설정해놓았던 세션에 참여하게 되었습니다. Spring Boot를 배우고 있고 &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;현재 작업 중인 프로젝트에서 회원탈퇴 API를 담당&lt;/b&gt;&lt;/span&gt;하고 있기에 관심이 있었습니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;하지만 아직 능력치가 한참 낮은 저로선 이해하기 어려운 내용이 많아서 열심히 녹음하면서 필기했습니다. 사람들이 기록하겠다며 사진촬영을 할 때에는 저도 함께 찍어놓고 &lt;b&gt;현재 공부하는 내용에서 순서가 찾아오면 다시 들어보며 이해&lt;/b&gt;해보려고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-12-21 오후 11.26.40.png&quot; data-origin-width=&quot;1748&quot; data-origin-height=&quot;1022&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zlmbN/btsLrFbUmh1/7oy8KEnYvfQhf6mTH2Mvj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zlmbN/btsLrFbUmh1/7oy8KEnYvfQhf6mTH2Mvj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zlmbN/btsLrFbUmh1/7oy8KEnYvfQhf6mTH2Mvj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzlmbN%2FbtsLrFbUmh1%2F7oy8KEnYvfQhf6mTH2Mvj0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1748&quot; height=&quot;1022&quot; data-filename=&quot;스크린샷 2024-12-21 오후 11.26.40.png&quot; data-origin-width=&quot;1748&quot; data-origin-height=&quot;1022&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이번주에 &lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;Filter&lt;/b&gt;&lt;/span&gt;에 대한 기본 개념을 배웠기에 조금 귀가 트였던 부분입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;Spring Security&lt;/b&gt;&lt;/span&gt;에서 &lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;Filter&lt;/b&gt;&lt;/span&gt;는 우측에 표시된 3가지만 기억해도 된다고 하셔서 후딱 찍어두었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;아마 &lt;b&gt;Doker&lt;/b&gt;보다 일찍 이해하게될 부분이 아닐까 싶어서 유심히 보며 놓치지 않고 들었지만, 조금 어려웠습니다 하하하..&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-12-21 오후 11.28.55.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1368&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WcDqv/btsLrERCiAT/3SY4m8KoSX3U7SQlHtR3s0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WcDqv/btsLrERCiAT/3SY4m8KoSX3U7SQlHtR3s0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WcDqv/btsLrERCiAT/3SY4m8KoSX3U7SQlHtR3s0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWcDqv%2FbtsLrERCiAT%2F3SY4m8KoSX3U7SQlHtR3s0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;350&quot; height=&quot;468&quot; data-filename=&quot;스크린샷 2024-12-21 오후 11.28.55.png&quot; data-origin-width=&quot;1024&quot; data-origin-height=&quot;1368&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;내일은 오후3시에 팀원들과 함께 &lt;b&gt;프로젝트 목표 항목을 모두 작업&lt;/b&gt;해보기로 했기에 밀린 강의를 들어야해서 &lt;b&gt;마지막 세션은 Skip&lt;/b&gt;하고 집으로 돌아갔습니다  &lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;아쉬운 마음이 컸지만, 집까지 가는 길이 멀고도 많이 막히는 이슈를 확인하고 호다닥 달려나왔답니다..  &lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-12-21 오후 11.32.07.png&quot; data-origin-width=&quot;1034&quot; data-origin-height=&quot;1318&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ny67K/btsLrinVdOA/2D8OM9su7FztJOcSlp9N0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ny67K/btsLrinVdOA/2D8OM9su7FztJOcSlp9N0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ny67K/btsLrinVdOA/2D8OM9su7FztJOcSlp9N0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNy67K%2FbtsLrinVdOA%2F2D8OM9su7FztJOcSlp9N0K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;373&quot; height=&quot;475&quot; data-filename=&quot;스크린샷 2024-12-21 오후 11.32.07.png&quot; data-origin-width=&quot;1034&quot; data-origin-height=&quot;1318&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;티켓을 구매하고 &lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;DevFest에 참여하면 티셔츠와 스티커 굿즈&lt;/b&gt;&lt;/span&gt;를 주시는데 생각보다 예뻐서 놀랐습니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;늦게 도착하면 평균적으로 많이 입는 사이즈가 없으니 꼭 참고하시는 편이 좋습니다. 저는 L를 신청했는데 M, 2XL, 3XL만 남아서 M으로 받았습니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;(M이 오히려 편안하게 맞아서 조금 크게 나오는 것 같다는 생각이 들었습니다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;원하는 사이즈가 없어서 죄송한 마음에 티셔츠 한 장 더 주신다고 하셨는데.. 감사히 받을 걸 그랬나 싶을 정도로 너무 편안하고 좋습니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;2025년에도 진행했으면 좋겠는데 &lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;2024년이 마지막 DevFest&lt;/b&gt;&lt;/span&gt;라고 합니다  &lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;2025년 01월에는 서울과학기술대학교에서 진행되는 개발자 페스티벌&lt;/b&gt; 후기로 돌아오겠습니다!&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;(서준수 연사자님의 세션부터 공유해보겠습니다 하핫)&lt;/span&gt;&lt;/p&gt;</description>
      <category>devfest</category>
      <category>GDG</category>
      <category>Google</category>
      <category>songdo incheon</category>
      <category>개발자</category>
      <category>개발자 페스티벌</category>
      <category>구글</category>
      <category>마이크로소프트</category>
      <category>송도 컨벤시아</category>
      <category>우아한 형제들</category>
      <author>얌얌커비</author>
      <guid isPermaLink="true">https://kirby-dev.tistory.com/3</guid>
      <comments>https://kirby-dev.tistory.com/entry/DevFest-SongdoIncheon-2024#entry3comment</comments>
      <pubDate>Sat, 21 Dec 2024 23:37:26 +0900</pubDate>
    </item>
    <item>
      <title>[ InteliJ ] 인텔리제이 단축키를 알아보자</title>
      <link>https://kirby-dev.tistory.com/entry/InteliJ-%EC%9D%B8%ED%85%94%EB%A6%AC%EC%A0%9C%EC%9D%B4-%EB%8B%A8%EC%B6%95%ED%82%A4%EB%A5%BC-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;20230906_64f8acadd4d14.gif&quot; data-origin-width=&quot;420&quot; data-origin-height=&quot;311&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oTt1G/btsLpFQk981/Ko3YEKjVLcLRzQPkNb3uC1/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oTt1G/btsLpFQk981/Ko3YEKjVLcLRzQPkNb3uC1/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oTt1G/btsLpFQk981/Ko3YEKjVLcLRzQPkNb3uC1/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/oTt1G/btsLpFQk981/Ko3YEKjVLcLRzQPkNb3uC1/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;314&quot; height=&quot;233&quot; data-filename=&quot;20230906_64f8acadd4d14.gif&quot; data-origin-width=&quot;420&quot; data-origin-height=&quot;311&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;인텔리제이를 사용한다면 반드시 확인해야할 단축키 목록&lt;i&gt;!&lt;/i&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;개발하는 &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;시간을 단축&lt;/b&gt;&lt;/span&gt;하며 효율을 높이고 싶다면 꼭 확인해보는 것을 권장합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&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;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 98.2558%; height: 410px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;&lt;b&gt;윈도우 (Windows)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;&lt;b&gt;맥 (MacOS)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;b&gt;복사하기&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;Ctrl + C&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;Cmd + C&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;b&gt;잘라내기&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;Ctrl + X&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;Cmd + &lt;span style=&quot;background-color: #f9f9f9; color: #333333; text-align: start;&quot;&gt;X&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;b&gt;붙여넣기&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;Ctrl +  V&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;Cmd + V&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;b&gt;주석 토글&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;Ctrl + /&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;Cmd + /&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;b&gt;전체 선택&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;Ctrl + A&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;Comd + A&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;b&gt;현재 파일에서 찾기&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;Ctrl + F&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;Cmd + F&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;b&gt;전체 파일에서 찾기&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;Ctrl + Shift + F&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;Cmd + Shift + F&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;b&gt;현재 파일에서 바꾸기&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;Ctrl + R&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;Cmd + R&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;b&gt;전체 파일에서 바꾸기&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;Ctrl + Shift + R&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;Cmd + Shift + R&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 18px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;&lt;b&gt;줄 복사&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;Ctrl + D&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 18px;&quot;&gt;Cmd + D&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&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;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 99.4186%; height: 212px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;b&gt;윈도우 (Windows)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;b&gt;맥 (MacOS)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;b&gt;실행&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Shift + F10&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;^ + R&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;b&gt;디버그 모드로 실행&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Shift + F9&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;^ + D&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;b&gt;리팩터링&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Shift + Ctrl + Alt + T&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;^ + T&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;b&gt;테스트 생성 / 이동&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Shift + Ctrl + T&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Cmd + Shift + T&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;b&gt;사용하지 않는 임포트문 삭제&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Ctrl + Alt + O&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;^ + Option + O&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&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;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;b&gt;윈도우 (Windows)&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;b&gt;맥 (MacOS)&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;b&gt;통합 검색&lt;/b&gt;&lt;br /&gt;(파일, 작업, 심벌, 도구 창 또는 설정을 빠르게 찾을 수 있음)&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;double Shift&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;double Shift&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;b&gt;강조 표시된 오류 및 경고에 대한 빠른 수정이나 코드개선&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Alt + Enter&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Option + Enter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;b&gt;최근에 연 파일 리스트&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Ctrl + E&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Cmd + E&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;b&gt;프로젝트 전체에서 코드 요소가 사용된 모든 위치를 표시&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Alt + F7&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;Option + F7&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&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;size14&quot;&gt;내가 원하는 단축키로 변경하고 싶거나 단축키 자체를 추가하고 싶다면 단축키 변경 기능을 사용하면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-12-20 오전 12.16.48.png&quot; data-origin-width=&quot;364&quot; data-origin-height=&quot;357&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/chbxbM/btsLpGuYbYP/jvJm8Fpk1vRKN5kJRz5FK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/chbxbM/btsLpGuYbYP/jvJm8Fpk1vRKN5kJRz5FK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/chbxbM/btsLpGuYbYP/jvJm8Fpk1vRKN5kJRz5FK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FchbxbM%2FbtsLpGuYbYP%2FjvJm8Fpk1vRKN5kJRz5FK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;364&quot; height=&quot;357&quot; data-filename=&quot;스크린샷 2024-12-20 오전 12.16.48.png&quot; data-origin-width=&quot;364&quot; data-origin-height=&quot;357&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;설정 탭 &amp;rarr; Keymap&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2024-12-20 오전 12.19.17.png&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;740&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cNHaoY/btsLow7vmXW/LkYdeKMRhL39ZnRNq14Yi0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cNHaoY/btsLow7vmXW/LkYdeKMRhL39ZnRNq14Yi0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cNHaoY/btsLow7vmXW/LkYdeKMRhL39ZnRNq14Yi0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcNHaoY%2FbtsLow7vmXW%2FLkYdeKMRhL39ZnRNq14Yi0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/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;740&quot; data-filename=&quot;스크린샷 2024-12-20 오전 12.19.17.png&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;740&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;메뉴에서 원하는 기능을 찾은 뒤&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;Add KeyBoard Shortcut&lt;/b&gt;&lt;/span&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;스크린샷 2024-12-20 오전 12.20.29.png&quot; data-origin-width=&quot;1028&quot; data-origin-height=&quot;233&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rkFt1/btsLpjGNeHe/rIJhBNeIjc8Gakq0UuoEQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rkFt1/btsLpjGNeHe/rIJhBNeIjc8Gakq0UuoEQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rkFt1/btsLpjGNeHe/rIJhBNeIjc8Gakq0UuoEQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrkFt1%2FbtsLpjGNeHe%2FrIJhBNeIjc8Gakq0UuoEQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1028&quot; height=&quot;233&quot; data-filename=&quot;스크린샷 2024-12-20 오전 12.20.29.png&quot; data-origin-width=&quot;1028&quot; data-origin-height=&quot;233&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;검색하려는 &lt;b&gt;단축키를 모르는 경우&lt;/b&gt; &lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;검색 바 오른쪽에 있는 돋보기 모양 아이콘&lt;/b&gt;&lt;/span&gt;을 눌러서 찾을 수 있습니다.&lt;/p&gt;</description>
      <category>기초 단축키</category>
      <category>단축키</category>
      <category>응용 단축키</category>
      <category>인텔리제이</category>
      <category>코딩</category>
      <category>코딩 단축키</category>
      <author>얌얌커비</author>
      <guid isPermaLink="true">https://kirby-dev.tistory.com/2</guid>
      <comments>https://kirby-dev.tistory.com/entry/InteliJ-%EC%9D%B8%ED%85%94%EB%A6%AC%EC%A0%9C%EC%9D%B4-%EB%8B%A8%EC%B6%95%ED%82%A4%EB%A5%BC-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90#entry2comment</comments>
      <pubDate>Fri, 20 Dec 2024 00:22:21 +0900</pubDate>
    </item>
    <item>
      <title>[ Git ] 좋은 Commit Message 작성하는 법!</title>
      <link>https://kirby-dev.tistory.com/entry/Git-%EC%A2%8B%EC%9D%80-Commit-Message-%EC%9E%91%EC%84%B1%ED%95%98%EB%8A%94-%EB%B2%95</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;IMG_2063.gif&quot; data-origin-width=&quot;432&quot; data-origin-height=&quot;223&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/81WC7/btsLpIySgKj/xplGQtlU8tA89pACjt15B1/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/81WC7/btsLpIySgKj/xplGQtlU8tA89pACjt15B1/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/81WC7/btsLpIySgKj/xplGQtlU8tA89pACjt15B1/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/81WC7/btsLpIySgKj/xplGQtlU8tA89pACjt15B1/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;378&quot; height=&quot;195&quot; data-filename=&quot;IMG_2063.gif&quot; data-origin-width=&quot;432&quot; data-origin-height=&quot;223&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;커밋 메세지를 작성할 때마다 &lt;a title=&quot;이전에 정리해놓은 글&quot; href=&quot;https://velog.io/@kirby_y/Git-%EC%A2%8B%EC%9D%80-%EC%BB%A4%EB%B0%8B%EC%9D%B4-%ED%95%98%EA%B3%A0-%EC%8B%B6%EB%8B%A4%EB%A9%B4-%EB%93%A4%EC%96%B4%EC%99%80-feat.-Google&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;이전에 정리해놓은 글&lt;/span&gt;&lt;/a&gt;을 참고하며 파파고를 사용했는데&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;생각보다 복잡스러운 글의 구조로 인해 불편해서 &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;조금 더 빠르고 쉽게 알아볼 수 있도록 정리&lt;/b&gt;&lt;/span&gt;했습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;좋은 커밋 메세지를 작성해야하는 이유&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;팀 프로젝트의 경험이 많지 않았다면 &lt;b&gt;좋은 커밋메세지 작성의 중요성&lt;/b&gt;에 대해 깨닫기 어려웠을 것이라고 생각됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;(저 또한 그렇게 생각해왔고, 앞으로 함께할 팀원과의 좋은 소통을 위해 작성방법에 대해 공부하게 되었습니다   )&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;협업을 하는 과정에서 가장 중요한 부분이 &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;소통&lt;/b&gt;&lt;/span&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;소통을 원활하게 하려면 &lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;한 눈에 알아볼 수있는 내용으로 정확하게 전달해야&lt;/b&gt;&lt;/span&gt;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;한 눈에 알아볼 수 있는 내용으로 정확하게 전달해야한다면, &lt;b&gt;커밋 규칙&lt;/b&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;(Clean Commit Message)&lt;/span&gt;에 대해 알아야합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;✏️ Clean Commit Message 커밋규칙&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b&gt;제목과 본문을 &lt;span style=&quot;color: #409d00;&quot;&gt;한 줄 띄어서 분리&lt;/span&gt;&lt;/b&gt;해 작성&lt;/li&gt;
&lt;li&gt;&lt;b&gt;제목&lt;/b&gt;은&lt;b&gt; &lt;span style=&quot;color: #409d00;&quot;&gt;50자 이내&lt;/span&gt;&lt;/b&gt; 작성 (영문 기준, 소문자로 시작)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;제목&lt;/b&gt; 작성 후 &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;끝에 . 마침표 특수문자 사용 금지&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;제목&lt;/b&gt;은 가급적이면 &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;명령조&lt;/b&gt;&lt;/span&gt;로 작성&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;본문 72자 마다 줄바꿔&lt;/b&gt;&lt;/span&gt; 작성 (영문 기준, 가급적 72자 이내 작성)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;본문&lt;/b&gt;은 &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;무엇을, 왜&lt;/b&gt;&lt;/span&gt; 에 맞춰 작성 (어떻게 보다 무엇과 왜에 대한 부분이 중요함)&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 style=&quot;text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;✔️ 커밋 컨벤션 규칙에 대해 알아보자&lt;/b&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;커밋 규칙과 함께 &lt;b&gt;커밋 메시지 컨벤션&lt;/b&gt;&lt;span style=&quot;color: #9d9d9d;&quot;&gt;(Commit Message Convention)&lt;/span&gt;이라는 일관된 형식의 커밋 메시지 작성을 위한 규칙이 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;여러 개발자 사이에서 통용되는 가이드라인이 있지만, 프로젝트에 따라 별도의 규칙을 만들기도 한다고 합니다. (기업마다 차이가 있는 부분)&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Angular 커밋 스타일 가이드&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;첫번째 줄&lt;/b&gt;의 &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;' 타입() : 간단한 내용 (명령문 형태로 작성) '&lt;/b&gt;&lt;/span&gt; 부분은 필수로 입력해야 하고&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size14&quot;&gt;&lt;b&gt;두번째 줄&lt;/b&gt;의 &lt;b&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;' 상세 내용 '&lt;/span&gt;&lt;/b&gt; 과 &lt;b&gt;세번째 줄&lt;/b&gt;의 &lt;b&gt;&lt;span style=&quot;color: #409d00;&quot;&gt;' 이슈 번호 또는 브레이킹 체인지에 대한 내용 '&lt;/span&gt;&lt;/b&gt; 부분은 필요할 때에만 입력하면 됩니다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1734588118493&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;타입() : 간단한 내용(명령문 형태로 작성)
==== 한 줄 띄우고 ====
상세 내용
==== 한 줄 띄우고 ====
이슈 번호 또는 브레이킹 체인지에 대한 내용&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;타입(Type)에 입력하는 용어&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;타입은 변경사항의 성격을 나타낼 수 있도록 입력해야 합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;b&gt;feat&lt;/b&gt; : 새로운 기능 추가&lt;/li&gt;
&lt;li&gt;&lt;b&gt;fix&lt;/b&gt; : 버그 수정&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ci&lt;/b&gt; : 관련 수정에 대한 커밋 타입&lt;/li&gt;
&lt;li&gt;&lt;b&gt;docs&lt;/b&gt; : 문서 수정&lt;/li&gt;
&lt;li&gt;&lt;b&gt;style&lt;/b&gt; : 코드 스타일 변경&lt;/li&gt;
&lt;li&gt;&lt;b&gt;refactor&lt;/b&gt; : 테스트 추가 또는 수정&lt;/li&gt;
&lt;li&gt;&lt;b&gt;test&lt;/b&gt; : 테스트 추가 또는 수정&lt;/li&gt;
&lt;li&gt;&lt;b&gt;build&lt;/b&gt; : 빌드 관련 파일 수정에 대한 커밋 타입&lt;/li&gt;
&lt;li&gt;&lt;b&gt;chore&lt;/b&gt; : 빌드/배포 관련 작업 및 패키지 관리 작업 등&lt;/li&gt;
&lt;li&gt;&lt;b&gt;perf&lt;/b&gt; : 성능 개선&lt;/li&gt;
&lt;li&gt;&lt;b&gt;hotfix&lt;/b&gt; : 긴급 버그 수정&lt;/li&gt;
&lt;li&gt;&lt;b&gt;security&lt;/b&gt; : 보안 관련 수정&lt;/li&gt;
&lt;li&gt;&lt;b&gt;revert&lt;/b&gt; : 커밋 되돌리기&lt;/li&gt;
&lt;li&gt;&lt;b&gt;deps&lt;/b&gt; : 의존성 관련 작업&lt;/li&gt;
&lt;li&gt;&lt;b&gt;config&lt;/b&gt; : 설정 파일 관련 작업&lt;/li&gt;
&lt;li&gt;&lt;b&gt;merge&lt;/b&gt; : 브랜치 병합&lt;/li&gt;
&lt;li&gt;&lt;b&gt;init&lt;/b&gt; : 프로젝트 초기화&lt;/li&gt;
&lt;li&gt;&lt;b&gt;ui&lt;/b&gt; : 사용자 인터페이스 관련 작업&lt;/li&gt;
&lt;li&gt;&lt;b&gt;cleanup&lt;/b&gt; : 코드 정리&lt;/li&gt;
&lt;li&gt;&lt;b&gt;prototype&lt;/b&gt; : 시제품 또는 실험적 작업&lt;/li&gt;
&lt;li&gt;&lt;b&gt;analysis&lt;/b&gt; : 분석 및 로깅 작업 ( )&lt;/li&gt;
&lt;li&gt;&lt;b&gt;localization&lt;/b&gt; : 다국어/로컬화 관련 작업 ( )&lt;/li&gt;
&lt;li&gt;&lt;b&gt;logging&lt;/b&gt; : 로그 추가/수정 ( )&lt;/li&gt;
&lt;/ul&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;size14&quot;&gt;타입 옆 괄호에는 변경된 기능이나 모듈의 범위를 나타내어야 합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #212529; text-align: start;&quot;&gt;  &lt;/span&gt;auth&lt;/b&gt; : 새로운 기능 추가&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #212529; text-align: start;&quot;&gt;⚙️ &lt;/span&gt;config&lt;/b&gt; : 설정이나 시스템 관련 기능 추가&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #212529; text-align: start;&quot;&gt;  &lt;/span&gt;ui&lt;/b&gt; or &lt;b&gt;art&lt;/b&gt; : UX/UI 개선이나 디자인 추가&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #212529; text-align: start;&quot;&gt;  &lt;/span&gt;utils&lt;/b&gt; : 도구나 유틸리티 추가&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #212529; text-align: start;&quot;&gt;  &lt;/span&gt;app&lt;/b&gt; : 모바일 관련 기능 추가&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #212529; text-align: start;&quot;&gt;  &lt;/span&gt;api&lt;/b&gt; : API 관련 작업&lt;/li&gt;
&lt;li&gt;&lt;b&gt;&lt;span style=&quot;background-color: #f8f9fa; color: #212529; text-align: start;&quot;&gt;  &lt;/span&gt;db&lt;/b&gt; : 데이터베이스 또는 데이터 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;&lt;b&gt;✔️&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;깃모지 사용 전, 알아야 할 3가지&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;깃에 사용되는 이모지를 깃모지라고 부르는데 깃모지를 이용하면 커밋 내역을 더욱 직관적으로 확인할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;하지만, 깃모지를 사용하고자 한다면 알고 있어야하는 부분이 3가지 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;139bce894a4e78a9c095ef3b59e5f3d1b2cb0df5.gif&quot; data-origin-width=&quot;540&quot; data-origin-height=&quot;304&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BU4Tw/btsLpabAam6/KZjq9V8dj0OQRMZKkfOJ71/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BU4Tw/btsLpabAam6/KZjq9V8dj0OQRMZKkfOJ71/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BU4Tw/btsLpabAam6/KZjq9V8dj0OQRMZKkfOJ71/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/BU4Tw/btsLpabAam6/KZjq9V8dj0OQRMZKkfOJ71/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;365&quot; height=&quot;205&quot; data-filename=&quot;139bce894a4e78a9c095ef3b59e5f3d1b2cb0df5.gif&quot; data-origin-width=&quot;540&quot; data-origin-height=&quot;304&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;&lt;b&gt;일관성 유지&lt;/b&gt; : 팀에서 자주 사용하는 이모지 리스트 또는 정해져있는 이모지 리스트 확인&lt;/li&gt;
&lt;li&gt;&lt;b&gt;가독성 관리&lt;/b&gt; : 메시지의 가독성을 해치지 않도록 맨 앞 부분에 간결하게 사용&lt;/li&gt;
&lt;li&gt;너무 많은 아이콘 사용은 혼란을 줄 수 있어서 상황에 맞게 1~2개까지만 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&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;size14&quot;&gt;커밋 메시지를 작성하는 것이 아직 습관화되지 않았다면 아래 내용을 참고해보면 좋은 습관을 들일 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;이전에 작성한 글은 하나 하나 확인해야해서 불편함을 느끼고 경우에 따라 사용할 수 있도록 정리했습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;image.gif&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;280&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Kwdx1/btsLoCTKiZJ/bOAthmp2WNURvOM0hFidZ0/img.gif&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Kwdx1/btsLoCTKiZJ/bOAthmp2WNURvOM0hFidZ0/img.gif&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Kwdx1/btsLoCTKiZJ/bOAthmp2WNURvOM0hFidZ0/img.gif&quot; srcset=&quot;https://blog.kakaocdn.net/dn/Kwdx1/btsLoCTKiZJ/bOAthmp2WNURvOM0hFidZ0/img.gif&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;371&quot; height=&quot;208&quot; data-filename=&quot;image.gif&quot; data-origin-width=&quot;500&quot; data-origin-height=&quot;280&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;feat&lt;/span&gt; : 새로운 기능 추가&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1734589562777&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt; 추천 깃모지 &amp;gt;
  - 새로운 기능의 추가를 강조할 때
✨ - 새로운 기능이나 개선된 기능 추가
  - 새로운 것을 도입할 때
  - 기능 아이디어를 구현할 때
  - 주요 기능 출시나 초기 단계 구현
 ️ - 새로운 기능을 위한 준비 작업&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커밋 메시지 예시&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734591231066&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 사용자 프로필 편집 기능 추가
✨ feat(auth) : add user profile editing feature&lt;/code&gt;&lt;/pre&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;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;fix&lt;/span&gt; : 버그 수정&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1734590494856&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt; 추천 깃모지 &amp;gt;
  - 버그 수정
  - 간단한 문제 해결&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커밋 메시지 예시&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734591236541&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// API 응답 파싱 오류 수정
  fix(api) : resolve issue with API response parsing&lt;/code&gt;&lt;/pre&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;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;ci&lt;/span&gt; : CI 관련 수정&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1734590507036&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt; 추천 깃모지 &amp;gt;
⚙️ - CI 설정 관련 작업
  - CI 빌드 설정 업데이트&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커밋 메시지 예시&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734592779146&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 자동화된 테스트를 위한 GitHub Actions 추가
⚙️ ci(actions) : add GitHub Actions for automated testing


// 스테이징 환경에서 CI 파이프라인 문제 수정
  ci(pipeline) : fix CI pipeline for staging environment&lt;/code&gt;&lt;/pre&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;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;docs&lt;/span&gt; : 문서 수정 (ex. README 변경)&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1734590516546&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt; 추천 깃모지 &amp;gt;
  - 문서 작성 및 수정
  - 문서화 작업&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커밋 메시지 예시&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734591917956&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 설치 가이드 추가를 위해 README 수정
  docs(readme) : update README with installation instructions&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;style&lt;/span&gt; : 코드 스타일 변경 (ex. 공백, 들여쓰기 수정)&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1734590556041&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt; 추천 깃모지 &amp;gt;
  - 코드 포맷팅, 스타일 변경
  - UI 또는 CSS 스타일링 작업&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커밋 메시지 예시&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734591935103&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 코드 가독성을 위해 포맷 변경
  style(lint) : reformat code for better readability&lt;/code&gt;&lt;/pre&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;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;refactor&lt;/span&gt; : 코드 리팩토링 (ex. 기능 변경 없음)&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1734590570083&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt; 추천 깃모지 &amp;gt;
♻️ - 리팩토링 작업
  - 코드 구조 변경&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커밋 메시지 예시&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734592302873&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 확장성을 고려한 폴더 구조 재구성
♻️ refactor(folder) : reorganize folder structure for scalability&lt;/code&gt;&lt;/pre&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;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;test&lt;/span&gt; : 테스트 추가 또는 수정&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1734590577706&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt; 추천 깃모지 &amp;gt;
✅ - 테스트 추가 및 수정
  - 실험적 테스트&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커밋 메시지 예시&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734592318519&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 로그인 기능에 대한 단위 테스트 추가
✅ test(login) : add unit tests for login functionality&lt;/code&gt;&lt;/pre&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;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;build&lt;/span&gt; : 빌드 관련 파일 수정&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1734590589567&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt; 추천 깃모지 &amp;gt;
 ️ - 빌드 구성 변경
  - 패키지 관련 작업&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커밋 메시지 예시&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734592337960&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 프로덕션 최적화를 위해 Webpack 설정 업데이트
 ️ build(webpack) : update webpack config for production optimization&lt;/code&gt;&lt;/pre&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;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;chore&lt;/span&gt; : 빌드/배포 관련 또는 패키지 관리&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1734590600080&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt; 추천 깃모지 &amp;gt;
  - 간단한 설정 작업
 ️ - 불필요한 파일 또는 코드 정리&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커밋 메시지 예시&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734592352683&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 의존성 최신 버전으로 업데이트
  chore(deps) : update dependencies to the latest version&lt;/code&gt;&lt;/pre&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;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;perf&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 성능 개선&lt;/h3&gt;
&lt;pre id=&quot;code_1734590900506&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt; 추천 깃모지 &amp;gt;
  - 성능 최적화 작업
⚡ - 빠른 로딩 또는 실행 개선&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커밋 메시지 예시&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734592377572&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 렌더링 프로세스를 최적화하여 로드 속도 개선
⚡ perf(render) : optimize rendering process for faster load times


// 개선된 캐싱 전략으로 서버 부하 감소
  perf(cache) : reduce server load with enhanced caching strategy&lt;/code&gt;&lt;/pre&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;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;hotfix&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 긴급 버그 수정&lt;/h3&gt;
&lt;pre id=&quot;code_1734590911736&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt; 추천 깃모지 &amp;gt;
  - 중요한 문제나 버그 긴급 수정&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커밋 메시지 예시&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734592393850&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 모바일 장치에서 발생하는 앱 크래시 긴급 수정
  hotfix(ui) : fix app crash on mobile devices&lt;/code&gt;&lt;/pre&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;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;security&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 보안 관련 수정&lt;/h3&gt;
&lt;pre id=&quot;code_1734590919220&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt; 추천 깃모지 &amp;gt;
  - 보안 취약점 해결
 ️ - 보안 강화 작업&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커밋 메시지 예시&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734592717117&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 비밀번호 해싱 과정에서 발생한 취약점 수정
  security(auth) : fix vulnerability in password hashing


// 공용 API에 대한 요청 속도 제한 기능 추가
 ️ security(api) : implement rate limiting for public APIs&lt;/code&gt;&lt;/pre&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;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;revert&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 커밋 되돌리기&lt;/h3&gt;
&lt;pre id=&quot;code_1734590956338&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt; 추천 깃모지 &amp;gt;
⏪ - 이전 커밋 복구&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커밋 메시지 예시&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734592433210&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 사용자 인증 기능 추가 커밋 되돌림
⏪ revert(auth) : revert &quot;add user authentication feature&quot;&lt;/code&gt;&lt;/pre&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;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;deps&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 의존성 관련 작업&lt;/h3&gt;
&lt;pre id=&quot;code_1734590961858&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt; 추천 깃모지 &amp;gt;
  - 의존성 추가 또는 수정
  - 라이브러리 업데이트&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커밋 메시지 예시&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734592455696&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// axios를 1.2.0 버전으로 업그레이드
  deps(axios) : upgrade axios to 1.2.0&lt;/code&gt;&lt;/pre&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;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;config&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 설정 파일 관련 작업&lt;/h3&gt;
&lt;pre id=&quot;code_1734590966728&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt; 추천 깃모지 &amp;gt;
⚙️ - 설정 파일 업데이트
 ️ - 환경 구성 변경&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커밋 메시지 예시&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734592468147&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 환경별 설정 파일 추가
⚙️ config(env) : add environment-specific configuration files&lt;/code&gt;&lt;/pre&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;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;merge&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 브랜치 병합&lt;/h3&gt;
&lt;pre id=&quot;code_1734590971242&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt; 추천 깃모지 &amp;gt;
  - 브랜치 병합 작업
  - 주요 병합 이슈 해결&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커밋 메시지 예시&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734592686413&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// feature/login 브랜치를 develop 브랜치에 병합
  merge(feature) : merge feature/login into develop


// 핫픽스 병합 중 발생한 충돌 해결
  merge(hotfix) : resolve conflicts during hotfix merge&lt;/code&gt;&lt;/pre&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;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;init&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 프로젝트 초기화&lt;/h3&gt;
&lt;pre id=&quot;code_1734590975566&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt; 추천 깃모지 &amp;gt;
  - 초기 커밋
 ️ - 프로젝트 초기 설정&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커밋 메시지 예시&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734592512457&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 기본 구조로 프로젝트 초기화
  init(project) : initialize project with base structure&lt;/code&gt;&lt;/pre&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;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;ui&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 사용자 인터페이스 관련 작업&lt;/h3&gt;
&lt;pre id=&quot;code_1734590979351&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt; 추천 깃모지 &amp;gt;
  - UI/UX 스타일 개선
 ️ - UI 디자인 작업&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커밋 메시지 예시&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734592529418&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 탐색성을 향상시키기 위해 헤더 컴포넌트 디자인 변경
  ui(header) : redesign header component for better navigation&lt;/code&gt;&lt;/pre&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;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;cleanup&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 코드 정리&lt;/h3&gt;
&lt;pre id=&quot;code_1734590982920&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt; 추천 깃모지 &amp;gt;
  - 불필요한 코드 제거
✂️ - 리소스 최적화&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커밋 메시지 예시&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734592548323&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 사용되지 않는 임포트와 불필요한 코드 제거
  cleanup(code) : remove unused imports and dead code&lt;/code&gt;&lt;/pre&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;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;&lt;b&gt;prototype&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;: 시제품 또는 실험적 작업&lt;/h3&gt;
&lt;pre id=&quot;code_1734590986400&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt; 추천 깃모지 &amp;gt;
  - 실험적 기능 구현
  - 진행 중인 작업&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;커밋 메시지 예시&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734592567162&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 새로운 대시보드 기능의 프로토타입 구현
  prototype(dashboard) : create prototype for new dashboard feature&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;</description>
      <category>clean commit message</category>
      <category>commit</category>
      <category>Dev</category>
      <category>Git</category>
      <category>깃</category>
      <category>깃 사용방법</category>
      <category>좋은 커밋</category>
      <category>좋은 커밋 메시지</category>
      <category>커밋 메세지</category>
      <category>커밋규칙</category>
      <author>얌얌커비</author>
      <guid isPermaLink="true">https://kirby-dev.tistory.com/1</guid>
      <comments>https://kirby-dev.tistory.com/entry/Git-%EC%A2%8B%EC%9D%80-Commit-Message-%EC%9E%91%EC%84%B1%ED%95%98%EB%8A%94-%EB%B2%95#entry1comment</comments>
      <pubDate>Thu, 19 Dec 2024 16:31:27 +0900</pubDate>
    </item>
  </channel>
</rss>