<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>web sprit</title>
    <link>https://kcmschool.tistory.com/</link>
    <description>Front &amp;amp; Back End 인생을 살아가면서 웹에 대한 모든 지식소통을 블로그에 담아 표현하려 합니다. 잠시 들려주시는 개발자 분들의 작은 소견이 저에게 조금이나마 힘이 됩니다. 같은 직종에 종사자들과의 소통이 늘 열려 있는 Web Sprit 입니다. :)</description>
    <language>ko</language>
    <pubDate>Wed, 8 Apr 2026 19:57:20 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>커드만</managingEditor>
    <image>
      <title>web sprit</title>
      <url>https://t1.daumcdn.net/cfile/tistory/267A96415611E2EE22</url>
      <link>https://kcmschool.tistory.com</link>
    </image>
    <item>
      <title>[React] 스타일을 적용하는 여러가지 방법 (line&amp;nbsp;스타일,&amp;nbsp;CSS&amp;nbsp;모듈,&amp;nbsp;styled-components&amp;nbsp;등)</title>
      <link>https://kcmschool.tistory.com/371</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;React 에서 스타일을 적용 종류&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;/li&gt;
&lt;li&gt;일반 CSS&lt;/li&gt;
&lt;li&gt;CSS Modules ( 예 : Button.module.css )&lt;/li&gt;
&lt;li&gt;styled-components (CSS-in-JS)&lt;/li&gt;
&lt;li&gt;Tailwind CSS&lt;/li&gt;
&lt;li&gt;SCSS(Sass)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt; React 에서 스타일을 적용 방법&lt;/b&gt;&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;일반 CSS 파일 사용&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.css 파일을 만들고 컴포넌트에서 import&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  Button.css&lt;/p&gt;
&lt;pre id=&quot;code_1763441810350&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;.button {
  background-color: black;
  color: white;
  padding: 12px 20px;
  border-radius: 6px;
}&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;  Button.jsx&lt;/p&gt;
&lt;pre id=&quot;code_1772165973737&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import './Button.css';

function Button() {
  return &amp;lt;button className=&quot;button&quot;&amp;gt;Click&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;blockquote data-ke-style=&quot;style2&quot;&gt;장점&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;가장 단순함.&lt;/li&gt;
&lt;li&gt;기존 HTML/CSS 개발 방식과 동일&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;단점&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클래스 이름 충돌 가능&lt;/li&gt;
&lt;li&gt;대규모 프로젝트에서 관리 어려움.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;인라인 스타일&amp;nbsp;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;style 속성에 JS 객체를 직접 넣음.&lt;/p&gt;
&lt;pre id=&quot;code_1772165874523&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function Button() {
  const style = {
    backgroundColor: 'black',
    color: 'white',
    padding: '12px 20px',
    borderRadius: '6px'
  };

  return &amp;lt;button style={style}&amp;gt;Click&amp;lt;/button&amp;gt;;
}


// 또는 직접 작성
function Button2() {
  return &amp;lt;button style={{ color: isActive ? 'red' : 'gray' }}&amp;gt;
}&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;장점&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;동적 스타일링에 매우 강함&lt;/li&gt;
&lt;li&gt;조건부 스타일링 쉬움&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;단점&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;hover, media query 사용 불가&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;style7&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;CSS Modules (실무 추천)&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;파일명을 Button.module.css 로 만들기&lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;CSS Modules + SCSS 조합&lt;/b&gt;&lt;/span&gt;은 지금도 실무에서 꽤 안정적인 선택&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;CRA, Vite, Next.js 같은 환경이면 기본 지원.&amp;nbsp;&lt;br /&gt;Webpack 같이 직접 설정하는 경우에 CSS Modules 설치 필요.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; 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 data-end=&quot;849&quot; data-start=&quot;833&quot;&gt;직접 만든 React 환경&lt;/li&gt;
&lt;li data-end=&quot;869&quot; data-start=&quot;850&quot;&gt;옛날 레거시 Webpack 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;898&quot; data-start=&quot;871&quot; data-ke-size=&quot;size16&quot;&gt;이 경우엔 css-loader 설정이 필요함.&lt;br /&gt;하지만 요즘은 거의 없음.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 85px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;환경&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;CSS Modules&amp;nbsp; 설치 필요?&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;CRA (Create React App)&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;Vite&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;Next.js&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;SCSS&lt;/td&gt;
&lt;td style=&quot;width: 50%; height: 17px;&quot;&gt;SASS만 설치&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%;&quot;&gt;커스텀 Webpack&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 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;  Button.module.css&lt;/p&gt;
&lt;pre id=&quot;code_1772165883882&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;.button {
  background: black;
  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;  Button.jsx&lt;/p&gt;
&lt;pre id=&quot;code_1772169653089&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import styles from './Button.module.css';

function Button() {
  return &amp;lt;button className={styles.button}&amp;gt;Click&amp;lt;/button&amp;gt;;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  변환된 모습&lt;/p&gt;
&lt;pre id=&quot;code_1772170522806&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 class=&quot;Button_button__3Hjks&quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;장점&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;클래스명이 자동으로 해시처리됨&lt;/li&gt;
&lt;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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;styled-components (CSS-in-JS)&amp;nbsp; - &lt;span style=&quot;color: #ee2323;&quot;&gt;설치 필요&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;설치&lt;/blockquote&gt;
&lt;pre id=&quot;code_1772165891013&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm install styled-components&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;사용예시&lt;/blockquote&gt;
&lt;pre id=&quot;code_1772171119417&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import styled from 'styled-components';

const Button = styled.button`
  background: black;
  color: white;
  padding: 12px 20px;
  border-radius: 6px;

  &amp;amp;:hover {
    background: gray;
  }
`;

function App() {
  return &amp;lt;Button&amp;gt;Click&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;blockquote data-ke-style=&quot;style2&quot;&gt;장점&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;컴포넌트와 스타일이 완전 결합&lt;/li&gt;
&lt;li&gt;hover, media query 가능&lt;/li&gt;
&lt;li&gt;props 기반 동적 스타일링 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1772172291923&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const Button = styled.button`
  background: ${props =&amp;gt; props.primary ? 'black' : 'gray'};
`;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;단점&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;런타임 비용 있음&lt;/li&gt;
&lt;li&gt;대규모 프로젝트에서는 번들 사이즈 증가 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;Tailwind CSS (유틸리티 클래스 방식) &lt;/span&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;설치 필요&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;요즘 가장 많이 쓰이는 방식 중 하나. Tailwind가 사실상 SCSS 변수 역할을 디자인 시스템 단위로 대체함.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;예시&lt;/blockquote&gt;
&lt;pre id=&quot;code_1772168555735&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function Button() {
  return (
    &amp;lt;button className=&quot;bg-black text-white px-5 py-3 rounded-md hover:bg-gray-700&quot;&amp;gt;
      Click
    &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;blockquote data-ke-style=&quot;style2&quot;&gt;장점&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;빠른개발&lt;/li&gt;
&lt;li&gt;클래스 충돌 없음&lt;/li&gt;
&lt;li&gt;반응형, hover 매우 편함&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote style=&quot;color: #666666; text-align: left;&quot; data-ke-style=&quot;style2&quot;&gt;단점&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTML이 길어짐&lt;/li&gt;
&lt;li&gt;디자인 시스템 이해 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;CSS 자체가 강해짐&lt;/blockquote&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 data-end=&quot;1326&quot; data-start=&quot;1310&quot;&gt;CSS 변수 (--var)&lt;/li&gt;
&lt;li data-end=&quot;1339&quot; data-start=&quot;1327&quot;&gt;nesting 지원&lt;/li&gt;
&lt;li data-end=&quot;1349&quot; data-start=&quot;1340&quot;&gt;clamp()&lt;/li&gt;
&lt;li data-end=&quot;1367&quot; data-start=&quot;1350&quot;&gt;container query&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;굳이 SCSS 안써도 되는 경우 많음.&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;style7&quot; /&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;조건부 클래스 적용 (실무 필수) &lt;/span&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;설치 필요&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;보통 clsx 또는 classnames 라이브러리 사용&lt;/p&gt;
&lt;pre id=&quot;code_1772168613223&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm install clsx&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1772174214549&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import clsx from 'clsx';

function Button({ active }) {
  return (
    &amp;lt;button className={clsx('btn', active &amp;amp;&amp;amp; 'active')}&amp;gt;
      Click
    &amp;lt;/button&amp;gt;
  );
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;SCSS / SASS 사용&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;CSS Modules + SCSS 조합&lt;/b&gt;&lt;/span&gt;은 지금도 실무에서 꽤 안정적인 선택&lt;/p&gt;
&lt;pre id=&quot;code_1772168622198&quot; class=&quot;css&quot; data-ke-language=&quot;css&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$primary: black;

.button {
  background: $primary;

  &amp;amp;:hover {
    background: gray;
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;장점&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;변수 사용 가능&lt;/li&gt;
&lt;li&gt;중첩 가능&lt;/li&gt;
&lt;li&gt;mixin 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CSS Modules 에서 SCSS 사용하려면 SASS 설치 필요.&lt;/p&gt;
&lt;pre id=&quot;code_1772175552975&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm install sass&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 다음 아래와 같이 선언하여 사용.&lt;/p&gt;
&lt;pre id=&quot;code_1772175566317&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;Button.module.scss&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;실무 트렌드 요약 (2026 기준)&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 data-end=&quot;3143&quot; data-start=&quot;3114&quot;&gt;스타트업 / 빠른 개발 &amp;rarr; &lt;b&gt;Tailwind&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;3175&quot; data-start=&quot;3144&quot;&gt;기업형 협업 프로젝트 &amp;rarr; &lt;b&gt;CSS Modules&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;3214&quot; data-start=&quot;3176&quot;&gt;디자인 시스템 강한 팀 &amp;rarr; &lt;b&gt;styled-components&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;3257&quot; data-start=&quot;3215&quot;&gt;Next.js 프로젝트 &amp;rarr; CSS Modules + Tailwind 혼용&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;추천 조합&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;✔ 안정성 중요 &amp;rarr; CSS Modules + SCSS&lt;br /&gt;✔ 빠른 생산성 &amp;rarr; Tailwind&lt;br /&gt;✔ 디자인 시스템 강한 앱 &amp;rarr; styled-components&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;</description>
      <category>Front End Developer/react 리액트</category>
      <category>CSS</category>
      <category>react</category>
      <category>Scss</category>
      <category>style</category>
      <category>리액트스타일</category>
      <category>스타일</category>
      <author>커드만</author>
      <guid isPermaLink="true">https://kcmschool.tistory.com/371</guid>
      <comments>https://kcmschool.tistory.com/371#entry371comment</comments>
      <pubDate>Tue, 18 Nov 2025 14:16:47 +0900</pubDate>
    </item>
    <item>
      <title>[React] JSX (JavaScript XML)</title>
      <link>https://kcmschool.tistory.com/370</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;JSX 란?&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;React에서 UI를 만들 때 사용하는 &lt;u&gt;&lt;b&gt;JavaScript + HTML&lt;/b&gt; 혼합 문법&lt;/u&gt;입다.&lt;br /&gt;겉으로&amp;nbsp;보기에는&amp;nbsp;HTML처럼&amp;nbsp;보이지만,&amp;nbsp;실제로는&amp;nbsp;JavaScript&amp;nbsp;코드이며&amp;nbsp;React가&amp;nbsp;이를&amp;nbsp;화면으로&amp;nbsp;변환해줍니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;JSX를 사용하는 이유 (장점)&lt;/b&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. UI 구조가 명확하여 읽기 쉽습니다.&lt;br /&gt;HTML 태그를 그대로 사용하므로 직관적입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 에러를 초기에 잡을 수 있습니다.&lt;br /&gt;JSX는 문법이 엄격하여 실수를 빠르게 알려줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 동적 UI를 쉽게 만들 수 있습니다.&lt;br /&gt;변수, 연산, 조건문 등을 {} 안에서 자유롭게 쓸 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 컴포넌트 기반 구조에 최적화되어 있습니다.&lt;br /&gt;UI를 작은 단위로 나누어 관리하기 좋습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;JSX 문법 규칙&lt;/b&gt;&lt;/h2&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;1. 반드시 하나의 부모로 감싸서 반환해야 합니다.&lt;/h4&gt;
&lt;pre id=&quot;code_1763090469491&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;return (
  &amp;lt;&amp;gt;
    &amp;lt;h1&amp;gt;Hello&amp;lt;/h1&amp;gt;
    &amp;lt;p&amp;gt;World&amp;lt;/p&amp;gt;
  &amp;lt;/&amp;gt;
);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;2. HTML과 속성명(&lt;span style=&quot;color: #006dd7;&quot;&gt;camelCase&lt;/span&gt;)이 다릅니다.&lt;/h4&gt;
&lt;pre id=&quot;code_1763090537084&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;div className=&quot;box&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자주 사용하는 JSX 속성명&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: 38.1395%;&quot;&gt;HTML&lt;/td&gt;
&lt;td style=&quot;width: 61.8605%;&quot;&gt;JSX&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 38.1395%;&quot;&gt;class&lt;/td&gt;
&lt;td style=&quot;width: 61.8605%;&quot;&gt;&lt;b&gt;className&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 38.1395%;&quot;&gt;&lt;b&gt;onclick&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 61.8605%;&quot;&gt;&lt;b&gt;onClick&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 38.1395%;&quot;&gt;tabindex&lt;/td&gt;
&lt;td style=&quot;width: 61.8605%;&quot;&gt;&lt;b&gt;tabIndex&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 38.1395%;&quot;&gt;maxlength&lt;/td&gt;
&lt;td style=&quot;width: 61.8605%;&quot;&gt;&lt;b&gt;maxLength&lt;/b&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;h4 data-ke-size=&quot;size20&quot;&gt;3. JavaScript&amp;nbsp;표현식은&amp;nbsp;{}&amp;nbsp;안에서&amp;nbsp;사용합니다&lt;/h4&gt;
&lt;pre id=&quot;code_1763090959728&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;function Hello() {

    const name = &quot;kcm&quot;;
    return &amp;lt;h1&amp;gt;{name}&amp;lt;/h1&amp;gt;;

}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;{} 안에는 변수, 연산(삼항연산, and조건 등), 함수 호출등이 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;if, for 문등은 사용할 수 없습니다.&lt;br /&gt;if문 대체하여 사용할 수 있는 방법은&lt;br /&gt;삼항연산자, and 조건&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;for문 대체하여 사용할 수 있는 방법은&lt;br /&gt;.map() 을 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;if나 for 문등을 대체하여 사용하는 법은 나중에 따로 다루도록 하겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;이렇게 JSX에 대해 알아봤습니다.&lt;br /&gt;그냥 보면 html 문법과 같아 보이지만&lt;br /&gt;JSX로 인해 html문법을 Javascript로 보다 쉽게 작성하고,&lt;br /&gt;속성명을 camelCase로 작성, 표현식 작성법,&lt;br /&gt;작성시 주의해야할 점에 대해 알아봤습니다.&lt;/p&gt;</description>
      <category>Front End Developer/react 리액트</category>
      <category>camelCase</category>
      <category>HTML</category>
      <category>JSX</category>
      <category>JSX작성법</category>
      <category>react</category>
      <category>리액트</category>
      <category>연산자</category>
      <author>커드만</author>
      <guid isPermaLink="true">https://kcmschool.tistory.com/370</guid>
      <comments>https://kcmschool.tistory.com/370#entry370comment</comments>
      <pubDate>Fri, 14 Nov 2025 13:00:14 +0900</pubDate>
    </item>
    <item>
      <title>[React] 컴포넌트 개념 (Component)</title>
      <link>https://kcmschool.tistory.com/369</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;React&amp;nbsp;컴포넌트란?&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;**UI의 작은 조각(블록)**이야. HTML의 &amp;lt;div&amp;gt; 같은 요소가 아니라, &amp;ldquo;화면에서 어떤 역할(버튼, 카드, 리스트, 모달 등)을 하는 코드 단위&amp;rdquo; 입니다.&lt;br /&gt;레고 블록처럼 조합해서 큰 UI를 만든다고 생각하면 쉽습니다. 각각의 컴포넌트는 **자기 책임(책임 단위: 한 가지 역할)**을 갖는 게 좋습니다.&lt;br /&gt;React에서는 보통 &lt;b&gt;함수형 컴포넌트&lt;/b&gt;를 사용합니다. 그냥 함수인데, JSX(HTML처럼 보이는 문법)를 반환하면 그게 컴포넌트가 됩니다.&lt;/p&gt;
&lt;pre id=&quot;code_1757341593975&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// hello.js
function Hello() {
  return &amp;lt;h1&amp;gt;안녕!&amp;lt;/h1&amp;gt;;
}

export default Hello;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;컴포넌트 주의할점&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이름은&amp;nbsp;대문자로&amp;nbsp;시작&lt;br /&gt;&amp;lt;hello /&amp;gt; &amp;rarr; HTML 태그로 인식됨.&lt;br /&gt;&amp;lt;Hello /&amp;gt; &amp;rarr; React 컴포넌트로 인식됨.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나의&amp;nbsp;컴포넌트는&amp;nbsp;하나의&amp;nbsp;JSX&amp;nbsp;요소만&amp;nbsp;반환&lt;br /&gt;여러 요소를 쓰고 싶으면 &amp;lt;div&amp;gt;로 감싸거나, &amp;lt;&amp;gt; &amp;lt;/&amp;gt; 같은 React Fragment를 사용.&lt;/p&gt;
&lt;pre id=&quot;code_1757342350363&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 잘못된 예시 X
function App() {
  return (
    &amp;lt;h1&amp;gt;안녕&amp;lt;/h1&amp;gt;
    &amp;lt;p&amp;gt;반가워&amp;lt;/p&amp;gt;
  );
}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1757342390648&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 올바른 예시 O
function App() {
  return (
    &amp;lt;div&amp;gt;
      &amp;lt;h1&amp;gt;안녕&amp;lt;/h1&amp;gt;
      &amp;lt;p&amp;gt;반가워&amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}

function App() {
  return (
    &amp;lt;&amp;gt;
      &amp;lt;h1&amp;gt;안녕&amp;lt;/h1&amp;gt;
      &amp;lt;p&amp;gt;반가워&amp;lt;/p&amp;gt;
    &amp;lt;/&amp;gt;
  );
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컴포넌트는&amp;nbsp;순수&amp;nbsp;함수처럼&amp;nbsp;동작&lt;br /&gt;화면에 직접 DOM을 건드리거나(global 변수를 막 바꾸는 등) 하면 예측하기 힘들짐.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;컴포넌트의&amp;nbsp;종류&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;함수형 컴포넌트 (Functional Component)&lt;/span&gt; &amp;mdash; 요즘 표준. Hooks(useState, useEffect 등)로 상태/사이클 제어.&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;useState&amp;nbsp;Hook&amp;nbsp;사용&lt;/li&gt;
&lt;li&gt;더&amp;nbsp;간결한&amp;nbsp;코드&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style8&quot; /&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;클래스형&amp;nbsp;컴포넌트&amp;nbsp;(Class&amp;nbsp;Component)&lt;/span&gt;&amp;nbsp;&amp;mdash;&amp;nbsp;예전&amp;nbsp;방식.&amp;nbsp;지금도&amp;nbsp;존재하지만&amp;nbsp;신규&amp;nbsp;코드에선&amp;nbsp;거의&amp;nbsp;쓰지&amp;nbsp;않음.&amp;nbsp;핵심&amp;nbsp;개념&amp;nbsp;이해용으로만&amp;nbsp;알면&amp;nbsp;됨.&lt;/b&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;this.state와&amp;nbsp;this.setState()&amp;nbsp;사용&lt;/li&gt;
&lt;li&gt;constructor에서&amp;nbsp;상태&amp;nbsp;초기화&lt;/li&gt;
&lt;li&gt;render()&amp;nbsp;메서드&amp;nbsp;필요&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1757339771073&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import React, { useState, Component } from 'react';


// 함수형 컴포넌트
function FunctionComponent() {
  const [count, setCount] = useState(0);

  return (
    &amp;lt;div&amp;gt;
      &amp;lt;h3&amp;gt;함수형 컴포넌트&amp;lt;/h3&amp;gt;
      &amp;lt;p&amp;gt;카운트: {count}&amp;lt;/p&amp;gt;
      &amp;lt;button onClick={() =&amp;gt; setCount(count + 1)}&amp;gt;증가&amp;lt;/button&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}


// 클래스형 컴포넌트
class ClassComponent extends Component {
  constructor(props) {
    super(props);
    this.state = { count: 0 };
  }

  render() {
    return (
      &amp;lt;div&amp;gt;
        &amp;lt;h3&amp;gt;클래스형 컴포넌트&amp;lt;/h3&amp;gt;
        &amp;lt;p&amp;gt;카운트: {this.state.count}&amp;lt;/p&amp;gt;
        &amp;lt;button onClick={() =&amp;gt; this.setState({ count: this.state.count + 1 })}&amp;gt;
          증가
        &amp;lt;/button&amp;gt;
      &amp;lt;/div&amp;gt;
    );
  }
}


// 사용 예시
function App() {
  return (
    &amp;lt;div&amp;gt;
      &amp;lt;FunctionComponent /&amp;gt;
      &amp;lt;ClassComponent /&amp;gt;
    &amp;lt;/div&amp;gt;
  );
}
export default App;&lt;/code&gt;&lt;/pre&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;권장됩니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;useState Hook과 같은 개념은 나중에 배울 개념으로 크게 신경쓰지 마시고, 컴포넌트를 만들때&lt;br /&gt;&lt;u&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;함수형&lt;/b&gt;&lt;/span&gt;&lt;/u&gt;과, &lt;u&gt;&lt;b&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;클래스형&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;이 이런식으로 만들어진다는것에 초점을 두고 보시면 좋을꺼 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 현재는 &lt;u&gt;&lt;b&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;함수형 컴포넌트&lt;/span&gt;&lt;/b&gt;&lt;/u&gt;가 많이 쓰인다는 부분을 인지하시고 클래스형 컴포넌트는 이런식으로 작성해서 사용한다만 알고 있으면 되겠습니다.&lt;/p&gt;</description>
      <category>Front End Developer/react 리액트</category>
      <category>Component</category>
      <category>react</category>
      <category>리액트</category>
      <category>컴포넌트</category>
      <category>클래스형</category>
      <category>함수형</category>
      <author>커드만</author>
      <guid isPermaLink="true">https://kcmschool.tistory.com/369</guid>
      <comments>https://kcmschool.tistory.com/369#entry369comment</comments>
      <pubDate>Mon, 8 Sep 2025 23:40:03 +0900</pubDate>
    </item>
    <item>
      <title>웹개발을 위한 웹사이트 제작 아키텍처</title>
      <link>https://kcmschool.tistory.com/368</link>
      <description>&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;웹사이트를&amp;nbsp;만든다는 &lt;br /&gt;어느정도의&amp;nbsp;개념은&amp;nbsp;있습니다.&amp;nbsp;어떻게&amp;nbsp;보면&amp;nbsp;지금&amp;nbsp;설명하려는&amp;nbsp;전체적인&amp;nbsp;흐름에서&amp;nbsp;모든것을&amp;nbsp;설명할&amp;nbsp;수&amp;nbsp;없지만 &lt;br /&gt;어떻게&amp;nbsp;만들어지는가의&amp;nbsp;개념의&amp;nbsp;이해를&amp;nbsp;위해&amp;nbsp;필요한&amp;nbsp;내용들을&amp;nbsp;다루려&amp;nbsp;합니다. &lt;br /&gt;저&amp;nbsp;또한&amp;nbsp;이&amp;nbsp;개념을&amp;nbsp;알기위해&amp;nbsp;정리하는&amp;nbsp;부분이라&amp;nbsp;이것에&amp;nbsp;대해&amp;nbsp;많은&amp;nbsp;지식을&amp;nbsp;가지신&amp;nbsp;분이라면&amp;nbsp;댓글로&amp;nbsp;알려주시면&amp;nbsp;수정하도록&amp;nbsp;하겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.&amp;nbsp;운영체제&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터,&amp;nbsp;서버&amp;nbsp;등을&amp;nbsp;다루기&amp;nbsp;위해&amp;nbsp;일단&amp;nbsp;하드웨어가&amp;nbsp;필요합니다. &lt;br /&gt;더&amp;nbsp;단순히&amp;nbsp;말하면&amp;nbsp;컴퓨터가&amp;nbsp;필요한&amp;nbsp;거겠죠. &lt;br /&gt;우리가&amp;nbsp;윈도우를&amp;nbsp;설치하여&amp;nbsp;컴퓨터에&amp;nbsp;사용하듯&amp;nbsp; &lt;br /&gt;웹개발을&amp;nbsp;위해&amp;nbsp;운영체제를&amp;nbsp;정하여&amp;nbsp;설치&amp;nbsp;하여야&amp;nbsp;합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&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;style2&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 99.9999%; text-align: center;&quot; colspan=&quot;3&quot;&gt;&lt;b&gt; 운영체제 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;Linux&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;Windows&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;Unix&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Linux,&amp;nbsp;Windows,&amp;nbsp;Unix&amp;nbsp;등&amp;nbsp;하드웨어를&amp;nbsp;직접&amp;nbsp;관리하는&amp;nbsp;시스템&amp;nbsp;소프트웨어가&amp;nbsp;있어야&amp;nbsp;합니다. &lt;br /&gt;현재는&amp;nbsp;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;u&gt;&lt;b&gt;리눅스&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;와&amp;nbsp;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;u&gt;&lt;b&gt;Windows&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;가&amp;nbsp;서버&amp;nbsp;시장의&amp;nbsp;대부분을&amp;nbsp;차지하고&amp;nbsp;있습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2.&amp;nbsp;웹서버&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;클라이언트(브라우저)&amp;nbsp;요청을&amp;nbsp;받아&amp;nbsp;정적&amp;nbsp;콘텐츠(HTML,&amp;nbsp;CSS,&amp;nbsp;JS,&amp;nbsp;이미지&amp;nbsp;등)를&amp;nbsp;제공,&amp;nbsp;동적&amp;nbsp;요청은&amp;nbsp;애플리케이션&amp;nbsp;서버에&amp;nbsp;프록시&amp;nbsp;전달,&amp;nbsp;SSL&amp;nbsp;처리,&amp;nbsp;로드밸런싱&lt;br /&gt;웹서버는&amp;nbsp;HTTP(S)&amp;nbsp;프로토콜로&amp;nbsp;클라이언트와&amp;nbsp;통신하며,&amp;nbsp;동적&amp;nbsp;콘텐츠&amp;nbsp;요청&amp;nbsp;시&amp;nbsp;애플리케이션&amp;nbsp;서버나&amp;nbsp;프레임워크로&amp;nbsp;요청&amp;nbsp;전달. &lt;br /&gt;대표&amp;nbsp;제품:&amp;nbsp;Nginx,&amp;nbsp;Apache,&amp;nbsp;IIS(윈도우)&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;style2&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 99.9999%; text-align: center;&quot; colspan=&quot;3&quot;&gt;&lt;b&gt; 웹서버 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;Nginx&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;Apache&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; text-align: center;&quot;&gt;IIS(윈도우)&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;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 애플리케이션 (Application Layer), 런타임 - 프로그래밍 언어&lt;/b&gt;&lt;/h3&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;br /&gt;프로그래밍&amp;nbsp;언어:&amp;nbsp;위&amp;nbsp;런타임&amp;nbsp;환경에서&amp;nbsp;사용하는&amp;nbsp;Java,&amp;nbsp;Python,&amp;nbsp;JavaScript,&amp;nbsp;C#,&amp;nbsp;PHP&amp;nbsp;등&amp;nbsp;다양함 &lt;br /&gt;연결:&amp;nbsp;미들웨어에서&amp;nbsp;실행,&amp;nbsp;데이터베이스&amp;nbsp;및&amp;nbsp;외부&amp;nbsp;API와&amp;nbsp;연동해&amp;nbsp;실제&amp;nbsp;서비스&amp;nbsp;기능&amp;nbsp;제공.&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;3-1. 런타임/미들웨어 (Application Server / Runtime Environment) - 서버사이드(백엔드) 환경&lt;/h4&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;연동,&amp;nbsp;API&amp;nbsp;제공,&amp;nbsp;트랜잭션&amp;nbsp;관리&amp;nbsp;등을&amp;nbsp;담당. &lt;br /&gt;서버에서&amp;nbsp;실행되는&amp;nbsp;애플리케이션&amp;nbsp;코드가&amp;nbsp;돌아가는&amp;nbsp;실행&amp;nbsp;환경(런타임)과,&amp;nbsp;여러&amp;nbsp;애플리케이션과&amp;nbsp;시스템을&amp;nbsp;연결해주는&amp;nbsp;소프트웨어&amp;nbsp;계층(미들웨어)을&amp;nbsp;포함하는&amp;nbsp;개념입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;node.js,&amp;nbsp;Python,&amp;nbsp;Java,&amp;nbsp;.NET,&amp;nbsp;PHP&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;/h4&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;style13&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 28.2559%;&quot;&gt;대표 기술 (개발 플랫)&lt;/td&gt;
&lt;td style=&quot;width: 71.7441%;&quot;&gt;언어별 서버&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 28.2559%;&quot;&gt;Java&lt;/td&gt;
&lt;td style=&quot;width: 71.7441%;&quot;&gt;Tomcat,&amp;nbsp;Jetty,&amp;nbsp;JBoss,&amp;nbsp;Spring&amp;nbsp;Framework&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 28.2559%;&quot;&gt;Node.js&amp;nbsp;(JavaScript&amp;nbsp;런타임)&lt;/td&gt;
&lt;td style=&quot;width: 71.7441%;&quot;&gt;Express.js,&amp;nbsp;Koa&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 28.2559%;&quot;&gt;Python&lt;/td&gt;
&lt;td style=&quot;width: 71.7441%;&quot;&gt;Django,&amp;nbsp;Flask,&amp;nbsp;FastAPI&amp;nbsp;(서버는&amp;nbsp;uWSGI,&amp;nbsp;Gunicorn&amp;nbsp;등으로&amp;nbsp;구동)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 28.2559%;&quot;&gt;.NET&lt;/td&gt;
&lt;td style=&quot;width: 71.7441%;&quot;&gt;IIS&amp;nbsp;+&amp;nbsp;ASP.NET&amp;nbsp;Core&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 28.2559%;&quot;&gt;PHP&lt;/td&gt;
&lt;td style=&quot;width: 71.7441%;&quot;&gt;Apache&amp;nbsp;+&amp;nbsp;PHP&amp;nbsp;모듈&amp;nbsp;또는&amp;nbsp;PHP-FPM&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;-&amp;nbsp;대표&amp;nbsp;기술&amp;nbsp;및&amp;nbsp;언어별&amp;nbsp;서버 &lt;br /&gt;Java:&amp;nbsp;Tomcat,&amp;nbsp;Jetty,&amp;nbsp;JBoss,&amp;nbsp;Spring&amp;nbsp;Framework &lt;br /&gt;Node.js&amp;nbsp;(JavaScript&amp;nbsp;런타임):&amp;nbsp;Express.js,&amp;nbsp;Koa &lt;br /&gt;Python:&amp;nbsp;Django,&amp;nbsp;Flask,&amp;nbsp;FastAPI&amp;nbsp;(서버는&amp;nbsp;uWSGI,&amp;nbsp;Gunicorn&amp;nbsp;등으로&amp;nbsp;구동) &lt;br /&gt;.NET:&amp;nbsp;IIS&amp;nbsp;+&amp;nbsp;ASP.NET&amp;nbsp;Core &lt;br /&gt;PHP:&amp;nbsp;Apache&amp;nbsp;+&amp;nbsp;PHP&amp;nbsp;모듈&amp;nbsp;또는&amp;nbsp;PHP-FPM&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;언어:&amp;nbsp;Java,&amp;nbsp;JavaScript,&amp;nbsp;Python,&amp;nbsp;C#,&amp;nbsp;PHP&amp;nbsp;등&amp;nbsp;서버&amp;nbsp;사이드&amp;nbsp;프로그래밍&amp;nbsp;언어 &lt;br /&gt;연결:&amp;nbsp;웹서버가&amp;nbsp;HTTP&amp;nbsp;요청을&amp;nbsp;전달하면,&amp;nbsp;미들웨어(런타임)가&amp;nbsp;이를&amp;nbsp;해석&amp;nbsp;후&amp;nbsp;내부&amp;nbsp;로직&amp;nbsp;처리&amp;nbsp;후&amp;nbsp;응답&amp;nbsp;생성.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 데이터베이스&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회원 정보, 게시글, 설정 값 등 사이트 데이터를 저장합니다. &lt;br /&gt;소규모라면&amp;nbsp;MySQL,&amp;nbsp;PostgreSQL,&amp;nbsp;SQLite,&amp;nbsp;MongoDB&amp;nbsp;같은&amp;nbsp;무료&amp;nbsp;DB도&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;데이터베이스 종류: 계층형, 네트워크형, 관계형(RDB), NoSQL, NewSQL &lt;/li&gt;
&lt;li&gt;주요 DBMS: Oracle, MySQL, PostgreSQL, MongoDB, Redis, Cassandra, Neo4j &amp;hellip; &lt;/li&gt;
&lt;li&gt;DB 언어:&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;SQL 표준 (DDL, DML, DCL, TCL)&lt;/li&gt;
&lt;li&gt;벤더 확장 언어 (PL/SQL, T-SQL &amp;hellip;)&lt;/li&gt;
&lt;li&gt;NoSQL&amp;nbsp;언어&amp;nbsp;(MongoDB&amp;nbsp;JSON&amp;nbsp;Query,&amp;nbsp;Cypher&amp;nbsp;&amp;hellip;)&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 250px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style14&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 21px;&quot;&gt;구분&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 21px;&quot;&gt;대표 DBMS&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 21px;&quot;&gt;특징&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 21px;&quot;&gt;주 사용 언어&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 72px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 72px;&quot;&gt;관계형&amp;nbsp;DB&amp;nbsp;(RDB)&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 72px;&quot;&gt;Oracle,&amp;nbsp;MySQL,&amp;nbsp;PostgreSQL,&amp;nbsp;MariaDB,&amp;nbsp;MS&amp;nbsp;SQL&amp;nbsp;Server&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 72px;&quot;&gt;테이블(행/열)&amp;nbsp;구조,&amp;nbsp;ACID&amp;nbsp;트랜잭션&amp;nbsp;지원&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 72px;&quot;&gt;SQL&amp;nbsp;(DDL,&amp;nbsp;DML,&amp;nbsp;DCL,&amp;nbsp;TCL) &lt;br /&gt;+&amp;nbsp;확장&amp;nbsp;언어&amp;nbsp;(Oracle&amp;nbsp;&amp;rarr;&amp;nbsp;PL/SQL,&amp;nbsp;MS&amp;nbsp;SQL&amp;nbsp;&amp;rarr;&amp;nbsp;T-SQL,&amp;nbsp;PostgreSQL&amp;nbsp;&amp;rarr;&amp;nbsp;PL/pgSQL)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 21px;&quot;&gt;NoSQL&amp;nbsp;-&amp;nbsp;Key-Value&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 21px;&quot;&gt;Redis,&amp;nbsp;DynamoDB&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 21px;&quot;&gt;단순&amp;nbsp;Key-Value&amp;nbsp;저장,&amp;nbsp;초고속&amp;nbsp;캐시&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 21px;&quot;&gt;명령&amp;nbsp;기반(GET,&amp;nbsp;SET,&amp;nbsp;EXPIRE&amp;nbsp;&amp;hellip;),&amp;nbsp;AWS&amp;nbsp;SDK&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;NoSQL&amp;nbsp;-&amp;nbsp;Document&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;MongoDB,&amp;nbsp;CouchDB&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;JSON&amp;nbsp;문서&amp;nbsp;기반&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;MongoDB&amp;nbsp;Query(find(),&amp;nbsp;aggregation),&amp;nbsp;Mango&amp;nbsp;Query&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;NoSQL&amp;nbsp;-&amp;nbsp;Column&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;Cassandra,&amp;nbsp;HBase&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;대규모&amp;nbsp;분산&amp;nbsp;데이터,&amp;nbsp;컬럼&amp;nbsp;단위&amp;nbsp;저장&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;CQL&amp;nbsp;(Cassandra&amp;nbsp;Query&amp;nbsp;Language)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;NoSQL&amp;nbsp;-&amp;nbsp;Graph&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;Neo4j,&amp;nbsp;Amazon&amp;nbsp;Neptune&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;노드/간선&amp;nbsp;기반&amp;nbsp;관계형&amp;nbsp;탐색&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;Cypher&amp;nbsp;Query&amp;nbsp;Language&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;NewSQL&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;Google&amp;nbsp;Spanner,&amp;nbsp;CockroachDB,&amp;nbsp;TiDB&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;RDB&amp;nbsp;+&amp;nbsp;분산처리&amp;nbsp;성능&lt;/td&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;SQL&amp;nbsp;기반&amp;nbsp;(확장형)&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;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;웹사이트&amp;nbsp;제작에서&amp;nbsp;주로&amp;nbsp;사용하는&amp;nbsp;데이터베이스(DB)를&amp;nbsp;종류&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;관계형 데이터베이스 (RDB), NoSQL 데이터베이스, NewSQL 데이터베이스&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;일반 웹사이트: MySQL, PostgreSQL, MariaDB &amp;rarr; 가장 흔함 &lt;/li&gt;
&lt;li&gt;실시간/빅데이터&amp;nbsp;웹사이트:&amp;nbsp;MongoDB,&amp;nbsp;Redis,&amp;nbsp;Cassandra &lt;/li&gt;
&lt;li&gt;글로벌&amp;nbsp;트랜잭션&amp;nbsp;사이트:&amp;nbsp;NewSQL&amp;nbsp;(Spanner,&amp;nbsp;CockroachDB)&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;etc.&amp;nbsp;선택적으로&amp;nbsp;추가할&amp;nbsp;요소&lt;/b&gt;&lt;/h3&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;Redis). &lt;br /&gt;스토리지/CDN: 이미지나 동영상 같은 큰 파일이 많으면 별도 저장소와 CDN 이용 추천. &lt;br /&gt;도메인/SSL: 도메인 등록과 HTTPS 보안 인증서 적용 필수.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;데이터&amp;nbsp;흐름&amp;nbsp;예시&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자가&amp;nbsp;웹브라우저에서&amp;nbsp;로그인&amp;nbsp;요청 &lt;br /&gt;&lt;br /&gt;요청이&amp;nbsp;네트워크와&amp;nbsp;웹서버를&amp;nbsp;거쳐&amp;nbsp;애플리케이션&amp;nbsp;서버에&amp;nbsp;도착 &lt;br /&gt;&lt;br /&gt;애플리케이션&amp;nbsp;서버가&amp;nbsp;데이터베이스에&amp;nbsp;사용자&amp;nbsp;정보&amp;nbsp;조회 &lt;br /&gt;&lt;br /&gt;데이터베이스가&amp;nbsp;사용자&amp;nbsp;정보를&amp;nbsp;반환 &lt;br /&gt;&lt;br /&gt;서버가&amp;nbsp;로그인&amp;nbsp;성공&amp;nbsp;여부를&amp;nbsp;판단하고&amp;nbsp;응답&amp;nbsp;생성 &lt;br /&gt;&lt;br /&gt;응답이&amp;nbsp;웹서버&amp;rarr;네트워크&amp;rarr;클라이언트로&amp;nbsp;전달 &lt;br /&gt;&lt;br /&gt;클라이언트가&amp;nbsp;사용자에게&amp;nbsp;로그인&amp;nbsp;결과&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;아키텍처&amp;nbsp;예시 &lt;br /&gt;사용자&amp;nbsp;(웹&amp;nbsp;브라우저)&amp;nbsp;&amp;rarr;&amp;nbsp;웹서버(Nginx)&amp;nbsp;&amp;rarr;&amp;nbsp;애플리케이션&amp;nbsp;서버(Express.js)&amp;nbsp;&amp;rarr;&amp;nbsp;데이터베이스(MySQL)&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹앱 제작을 위해 기본적으로&lt;br /&gt;운영체제, 웹서버, 애플리케이션서버, 데이터베이스 만으로도 가능하지만&amp;nbsp;&lt;br /&gt;현대적인 웹 개발에서 &lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;웹서버&lt;/span&gt;&lt;/b&gt;의 기능과 &lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;애플리케이션&lt;/span&gt;&lt;/b&gt;의 실행 환경을 같이 제공합니다.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Node.js&amp;nbsp;+&amp;nbsp;Express/Fastify/NestJS&lt;/b&gt; &lt;br /&gt;&amp;rarr;&amp;nbsp;Node&amp;nbsp;프로세스&amp;nbsp;자체가&amp;nbsp;HTTP&amp;nbsp;요청&amp;nbsp;처리와&amp;nbsp;비즈니스&amp;nbsp;로직을&amp;nbsp;같이&amp;nbsp;수행 &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Django&amp;nbsp;+&amp;nbsp;Gunicorn/Uvicorn&lt;/b&gt; &lt;br /&gt;&amp;rarr;&amp;nbsp;Gunicorn/Uvicorn이&amp;nbsp;WSGI/ASGI&amp;nbsp;서버로&amp;nbsp;Django&amp;nbsp;실행&amp;nbsp;(실제&amp;nbsp;로직은&amp;nbsp;Django가&amp;nbsp;처리) &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Spring&amp;nbsp;Boot&amp;nbsp;(Java)&lt;/b&gt; &lt;br /&gt;&amp;rarr;&amp;nbsp;내장&amp;nbsp;Tomcat/Jetty&amp;nbsp;서버&amp;nbsp;안에서&amp;nbsp;애플리케이션&amp;nbsp;구동 &lt;br /&gt;&lt;br /&gt;&lt;b&gt;PHP&amp;nbsp;+&amp;nbsp;PHP-FPM&lt;/b&gt; &lt;br /&gt;&amp;rarr;&amp;nbsp;Nginx/Apache가&amp;nbsp;HTTP&amp;nbsp;요청을&amp;nbsp;받아&amp;nbsp;PHP-FPM으로&amp;nbsp;넘기고,&amp;nbsp;PHP가&amp;nbsp;비즈니스&amp;nbsp;로직&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;u&gt;&lt;b&gt;옛날&lt;/b&gt;: 웹서버(Apache) + 애플리케이션 서버(WebLogic) + DB&lt;/u&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;요즘&lt;/b&gt;:&amp;nbsp;리버스&amp;nbsp;프록시(Nginx/CDN)&amp;nbsp;+&amp;nbsp;런타임(Node.js,&amp;nbsp;Spring&amp;nbsp;Boot,&amp;nbsp;Django&amp;nbsp;등)&amp;nbsp;+&amp;nbsp;DB&lt;/u&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Front End Developer/웹 개발 아키텍처</category>
      <category>데이터베이스</category>
      <category>서버</category>
      <category>아키텍처</category>
      <category>애플리케이션</category>
      <category>웹사이트</category>
      <category>웹서버</category>
      <category>웹제작</category>
      <category>흐름</category>
      <author>커드만</author>
      <guid isPermaLink="true">https://kcmschool.tistory.com/368</guid>
      <comments>https://kcmschool.tistory.com/368#entry368comment</comments>
      <pubDate>Fri, 29 Aug 2025 19:09:03 +0900</pubDate>
    </item>
    <item>
      <title>[React] import 사용법</title>
      <link>https://kcmschool.tistory.com/367</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;import&amp;nbsp;방법은&amp;nbsp;여러가지가&amp;nbsp;있지만&amp;nbsp;크게&amp;nbsp;두가지로&amp;nbsp;나누면 &lt;br /&gt;Named&amp;nbsp;Import,&amp;nbsp;Default&amp;nbsp;Import&amp;nbsp;방법이&amp;nbsp;있습니다. &lt;br /&gt;&lt;br /&gt;먼저&amp;nbsp;import&amp;nbsp;작성을&amp;nbsp;보면&amp;nbsp;이런식으로&amp;nbsp;3가지&amp;nbsp;방식으로&amp;nbsp;가져오는걸&amp;nbsp;본적이&amp;nbsp;있으실&amp;nbsp;겁니다. &lt;br /&gt;&lt;br /&gt;import&amp;nbsp;컴포넌트0&amp;nbsp;from&amp;nbsp;'./component.js'; &lt;br /&gt;import&amp;nbsp;{&amp;nbsp;컴포넌트1,&amp;nbsp;컴포넌트2&amp;nbsp;}&amp;nbsp;from&amp;nbsp;'./component.js'; &lt;br /&gt;import&amp;nbsp;컴포넌트0,&amp;nbsp;{&amp;nbsp;컴포넌트1,&amp;nbsp;컴포넌트2&amp;nbsp;}&amp;nbsp;from&amp;nbsp;'./component.js'; &lt;br /&gt;&lt;br /&gt;왜&amp;nbsp;다&amp;nbsp;같은&amp;nbsp;컴포넌트인데&amp;nbsp;어떤건&amp;nbsp;대괄호&amp;nbsp;안에&amp;nbsp;넣어서&amp;nbsp;부르고&amp;nbsp;어떤건&amp;nbsp;그냥&amp;nbsp;써서&amp;nbsp;불러오고&amp;nbsp;하는걸까요? &lt;br /&gt;아래의&amp;nbsp;Named&amp;nbsp;Import,&amp;nbsp;Default&amp;nbsp;Import&amp;nbsp;보시면&amp;nbsp;왜&amp;nbsp;이렇게&amp;nbsp;불러오시는지&amp;nbsp;이해가&amp;nbsp;되실겁니다. &lt;br /&gt;그밖의&amp;nbsp;나머지&amp;nbsp;불러오는&amp;nbsp;형식도&amp;nbsp;정리해&amp;nbsp;보았습니다.&amp;nbsp;참고만해도&amp;nbsp;좋을꺼&amp;nbsp;같네요.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1.&amp;nbsp;Named&amp;nbsp;Import&amp;nbsp;(이름을&amp;nbsp;지정한&amp;nbsp;가져오기)&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1756195808590&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// component.js
export function 컴포넌트1(){
	return &amp;lt;button&amp;gt;Hello&amp;lt;/button&amp;gt;;
}

export const 컴포넌트2 = () =&amp;gt; &amp;lt;button&amp;gt;Hello&amp;lt;/button&amp;gt;;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1756195829701&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// app.js
import { 컴포넌트1, 컴포넌트2 } from './component.js';

function App() {
	return{
		&amp;lt;div&amp;gt;
			&amp;lt;컴포넌트1 /&amp;gt;
			&amp;lt;컴포넌트2 /&amp;gt;
		&amp;lt;/div&amp;gt;
	};
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;2.&amp;nbsp;Default&amp;nbsp;Import&amp;nbsp;(기본&amp;nbsp;가져오기)&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1756196726236&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// component.js
export default function 컴포넌트1(){
	return &amp;lt;button&amp;gt;Hello&amp;lt;/button&amp;gt;;
}


or


function 컴포넌트1(){
	return &amp;lt;button&amp;gt;Hello&amp;lt;/button&amp;gt;;
}

export default 컴포넌트1;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1756196743340&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// app.js
import 컴포1 from './component.js'; // 이름은 마음대로 정할 수 있음

function App() {
	return{
		&amp;lt;div&amp;gt;
			&amp;lt;컴포1 /&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. Mixed Import (혼합 가져오기 - Named + Default)&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1756197546733&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// component.js
export default function 컴포넌트1(){
	return &amp;lt;button&amp;gt;Hello&amp;lt;/button&amp;gt;;
}

export const 컴포넌트2 = () =&amp;gt; &amp;lt;button&amp;gt;Hello&amp;lt;/button&amp;gt;;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1756197563991&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// app.js
import 컴포1, { 컴포넌트2 } from './component.js'; // 컴포넌트1의 이름은 마음대로 정할 수 있음

function App() {
	return{
		&amp;lt;div&amp;gt;
			&amp;lt;컴포1 /&amp;gt;
			&amp;lt;컴포넌트2 /&amp;gt;
		&amp;lt;/div&amp;gt;
	};
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런생각을 가지시는 분들이 있을꺼 같습니다. 한 파일에 export default 가 2개 있으면 어떻게 되는가?? 하지만&lt;br /&gt;하나의 모듈(file)에는 default export가 오직 하나만 가능합니다. 그래서 default 인듯...&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4. Namespace Import (네임스페이스 가져오기)&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1756230385835&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// component.js
export default function 컴포넌트1(){
	return &amp;lt;button&amp;gt;Hello&amp;lt;/button&amp;gt;;
}

export const 컴포넌트2 = () =&amp;gt; &amp;lt;button&amp;gt;Hello&amp;lt;/button&amp;gt;;

export const 컴포넌트3 = () =&amp;gt; &amp;lt;button&amp;gt;Hello&amp;lt;/button&amp;gt;;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1756230403992&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// app.js
import 컴포넌트1, * as Comp from './component.js'; // 컴포넌트1의 이름은 마음대로 정할 수 있음

function App() {
	return{
		&amp;lt;div&amp;gt;
			&amp;lt;컴포넌트1 /&amp;gt;
			&amp;lt;Comp.컴포넌트2 /&amp;gt;
			&amp;lt;Comp.컴포넌트3 /&amp;gt;
		&amp;lt;/div&amp;gt;
	};
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Namespace&amp;nbsp;Import는&amp;nbsp;ES6&amp;nbsp;모듈&amp;nbsp;문법에서&amp;nbsp;import&amp;nbsp;*&amp;nbsp;as&amp;nbsp;이름&amp;nbsp;from&amp;nbsp;'모듈'&amp;nbsp;형태를&amp;nbsp;말합니다. &lt;br /&gt;즉,&amp;nbsp;모듈&amp;nbsp;안의&amp;nbsp;모든&amp;nbsp;export를&amp;nbsp;한&amp;nbsp;번에&amp;nbsp;가져와서&amp;nbsp;특정&amp;nbsp;이름(이름)&amp;nbsp;아래에서&amp;nbsp;접근할&amp;nbsp;수&amp;nbsp;있게&amp;nbsp;하는&amp;nbsp;방식입니다. &lt;br /&gt;(*&amp;nbsp;export&amp;nbsp;default는&amp;nbsp;따로&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;5. Side Effect Import (부수 효과 가져오기)&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1756230694283&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import './styles.css';
import 'bootstrap/dist/css/bootstrap.min.css';
import './some-module.js';&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모듈에서&amp;nbsp;export를&amp;nbsp;가져오는&amp;nbsp;것이&amp;nbsp;아니라,&amp;nbsp;모듈을&amp;nbsp;불러오는&amp;nbsp;것&amp;nbsp;자체로&amp;nbsp;부수&amp;nbsp;효과(사이드&amp;nbsp;이펙트)를&amp;nbsp;발생시키는&amp;nbsp;import를&amp;nbsp;말합니다. &lt;br /&gt;주로&amp;nbsp;CSS,&amp;nbsp;폴리필,&amp;nbsp;전역&amp;nbsp;설정,&amp;nbsp;초기화&amp;nbsp;코드&amp;nbsp;등을&amp;nbsp;불러올&amp;nbsp;때&amp;nbsp;사용됩니다.&lt;br /&gt;더 단순하게 얘기하면 그냥 필요한 파일을 연결할때 사용합니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;기타 import 방식입니다. 주로 사용하는 import 방식은 윗부분이겠네요.&lt;br /&gt;아래 내용은 참고 바랍니다.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;6. Dynamic Import (동적 가져오기)&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1756230938350&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 컴포넌트 지연 로딩
const LazyComponent = React.lazy(() =&amp;gt; import('./LazyComponent'));

// 런타임에 동적으로 가져오기
const loadModule = async () =&amp;gt; {
  const module = await import('./module');
  return module.default;
};&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;7. Conditional Import (조건부 가져오기)&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1756231042198&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 개발/프로덕션 환경에 따라
if (process.env.NODE_ENV === 'development') {
  import('./devTools').then(devTools =&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;b&gt;8.&amp;nbsp;Re-export&amp;nbsp;(재내보내기)&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1756231080293&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// index.js에서 여러 컴포넌트를 한번에 내보내기
export { default as Component1 } from './Component1';
export { default as Component2 } from './Component2';
export * from './utils';&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;각 방식은 상황에 따라 적절히 선택해서 사용하면 됩니다. 가장 일반적으로는 &lt;u&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1. Named Import&lt;/b&gt;&lt;/span&gt;&lt;/u&gt; 와 &lt;u&gt;&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;2. Default Import&lt;/span&gt;&lt;/b&gt;&lt;/u&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;</description>
      <category>Front End Developer/react 리액트</category>
      <category>react</category>
      <category>react js</category>
      <category>리액트</category>
      <category>스터디</category>
      <category>자바스크립트</category>
      <author>커드만</author>
      <guid isPermaLink="true">https://kcmschool.tistory.com/367</guid>
      <comments>https://kcmschool.tistory.com/367#entry367comment</comments>
      <pubDate>Tue, 26 Aug 2025 17:41:45 +0900</pubDate>
    </item>
    <item>
      <title>[React] 리액트 스터디</title>
      <link>https://kcmschool.tistory.com/366</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;퍼블리셔가 리액트 프록젝트에 참여하기 위해 필수로 알아야하는 스터디 목록을 정리하려 합니다.&lt;br /&gt;순차적으로 진행되는 스터디 목록은 이곳에 정리하여 나중에 확인하고 활용할 수 있도록 하겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[React]&amp;nbsp;import&amp;nbsp;사용법&lt;/p&gt;
&lt;figure id=&quot;og_1756231377095&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[React] import 사용법&quot; data-og-description=&quot;import 방법은 여러가지가 있지만 크게 두가지로 나누면 Named Import, Default Import 방법이 있습니다. 먼저 import 작성을 보면 이런식으로 3가지 방식으로 가져오는걸 본적이 있으실 겁니다. import 컴포&quot; data-og-host=&quot;kcmschool.com&quot; data-og-source-url=&quot;https://kcmschool.tistory.com/367&quot; data-og-url=&quot;https://kcmschool.com/367&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/c3dhRE/hyZGj5kX7O/mKZ6VMTaGGiIFfJH4T63SK/img.png?width=500&amp;amp;height=500&amp;amp;face=86_236_119_272,https://scrap.kakaocdn.net/dn/cxOAHS/hyZGbMZ4R2/vXEjjkbsk9ino0F33m8t7k/img.png?width=500&amp;amp;height=500&amp;amp;face=86_236_119_272&quot;&gt;&lt;a href=&quot;https://kcmschool.tistory.com/367&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kcmschool.tistory.com/367&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/c3dhRE/hyZGj5kX7O/mKZ6VMTaGGiIFfJH4T63SK/img.png?width=500&amp;amp;height=500&amp;amp;face=86_236_119_272,https://scrap.kakaocdn.net/dn/cxOAHS/hyZGbMZ4R2/vXEjjkbsk9ino0F33m8t7k/img.png?width=500&amp;amp;height=500&amp;amp;face=86_236_119_272');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[React] import 사용법&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;import 방법은 여러가지가 있지만 크게 두가지로 나누면 Named Import, Default Import 방법이 있습니다. 먼저 import 작성을 보면 이런식으로 3가지 방식으로 가져오는걸 본적이 있으실 겁니다. import 컴포&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;kcmschool.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[React] 컴포넌트 개념 (Component)&lt;/p&gt;
&lt;figure id=&quot;og_1763088593860&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[React] 컴포넌트 개념 (Component)&quot; data-og-description=&quot;React 컴포넌트란?**UI의 작은 조각(블록)**이야. HTML의 같은 요소가 아니라, &amp;ldquo;화면에서 어떤 역할(버튼, 카드, 리스트, 모달 등)을 하는 코드 단위&amp;rdquo; 입니다.레고 블록처럼 조합해서 큰 UI를 만든다&quot; data-og-host=&quot;kcmschool.com&quot; data-og-source-url=&quot;https://kcmschool.com/369&quot; data-og-url=&quot;https://kcmschool.com/369&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/uzQzS/hyZMFoXcM6/7YlahkIsL9EHpCjFRIUplK/img.png?width=500&amp;amp;height=500&amp;amp;face=86_236_119_272,https://scrap.kakaocdn.net/dn/cleHCY/hyZMFvHypB/3vYHt10e2YKQ9Dqrv2wkDK/img.png?width=500&amp;amp;height=500&amp;amp;face=86_236_119_272&quot;&gt;&lt;a href=&quot;https://kcmschool.com/369&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kcmschool.com/369&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/uzQzS/hyZMFoXcM6/7YlahkIsL9EHpCjFRIUplK/img.png?width=500&amp;amp;height=500&amp;amp;face=86_236_119_272,https://scrap.kakaocdn.net/dn/cleHCY/hyZMFvHypB/3vYHt10e2YKQ9Dqrv2wkDK/img.png?width=500&amp;amp;height=500&amp;amp;face=86_236_119_272');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[React] 컴포넌트 개념 (Component)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;React 컴포넌트란?**UI의 작은 조각(블록)**이야. HTML의 같은 요소가 아니라, &amp;ldquo;화면에서 어떤 역할(버튼, 카드, 리스트, 모달 등)을 하는 코드 단위&amp;rdquo; 입니다.레고 블록처럼 조합해서 큰 UI를 만든다&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;kcmschool.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;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[React]&amp;nbsp;JSX&amp;nbsp;(JavaScript&amp;nbsp;XML)&lt;/p&gt;
&lt;figure id=&quot;og_1763439629440&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[React] JSX (JavaScript XML)&quot; data-og-description=&quot;JSX 란?React에서 UI를 만들 때 사용하는 JavaScript + HTML 혼합 문법입다.겉으로 보기에는 HTML처럼 보이지만, 실제로는 JavaScript 코드이며 React가 이를 화면으로 변환해줍니다.JSX를 사용하는 이유 (장점)&quot; data-og-host=&quot;kcmschool.com&quot; data-og-source-url=&quot;https://kcmschool.com/370&quot; data-og-url=&quot;https://kcmschool.com/370&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/W02N5/hyZNGUrjon/bUrpRQDrIeBNvDURVLPUm0/img.png?width=500&amp;amp;height=500&amp;amp;face=86_236_119_272,https://scrap.kakaocdn.net/dn/b6DOq9/hyZOdRAXnv/NJriUxUH5hopkkR8PNpMGK/img.png?width=500&amp;amp;height=500&amp;amp;face=86_236_119_272&quot;&gt;&lt;a href=&quot;https://kcmschool.com/370&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kcmschool.com/370&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/W02N5/hyZNGUrjon/bUrpRQDrIeBNvDURVLPUm0/img.png?width=500&amp;amp;height=500&amp;amp;face=86_236_119_272,https://scrap.kakaocdn.net/dn/b6DOq9/hyZOdRAXnv/NJriUxUH5hopkkR8PNpMGK/img.png?width=500&amp;amp;height=500&amp;amp;face=86_236_119_272');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[React] JSX (JavaScript XML)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;JSX 란?React에서 UI를 만들 때 사용하는 JavaScript + HTML 혼합 문법입다.겉으로 보기에는 HTML처럼 보이지만, 실제로는 JavaScript 코드이며 React가 이를 화면으로 변환해줍니다.JSX를 사용하는 이유 (장점)&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;kcmschool.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[React] 스타일을 적용하는 여러가지 방법 (cin-line&amp;nbsp;스타일,&amp;nbsp;CSS&amp;nbsp;모듈,&amp;nbsp;styled-components&amp;nbsp;등)&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[React] Props 개념과 활용방법&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[React] React Hook - useState (상태관리)&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[React] React Hook - useEffect (부수 효과 처리)&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Front End Developer/react 리액트</category>
      <category>react</category>
      <category>리액트</category>
      <category>리엑트</category>
      <category>스터디</category>
      <category>퍼블리셔</category>
      <author>커드만</author>
      <guid isPermaLink="true">https://kcmschool.tistory.com/366</guid>
      <comments>https://kcmschool.tistory.com/366#entry366comment</comments>
      <pubDate>Mon, 25 Aug 2025 14:25:19 +0900</pubDate>
    </item>
    <item>
      <title>cursor 피그마(Figma) MCP 설치방법</title>
      <link>https://kcmschool.tistory.com/365</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;피그마 MCP를 설치하는 방법은 몇가지가 있지만,&lt;br /&gt;피그마에서 공식적으로 MCP를 제공해주게 되어 아무래도 이 방법이 좋을꺼 같습니다.&lt;br /&gt;뭐 적용방법이 쉽기도 합니다.&lt;br /&gt;&lt;br /&gt;피그마가 설치 되거나 사용한다는 전제하에 설명 드리도록 하겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;1. bunx 또는 bun 설치 및 실행&lt;/b&gt;&lt;br /&gt;터미널에서 아래와 같은 명령어를 실행해 줍니다.&lt;/h2&gt;
&lt;pre id=&quot;code_1755869095522&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;bunx cursor-talk-to-figma-socket&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 bunx가 설치되어 있지 않다면 위의 명령이 실행되지 않습니다. 그럼 먼저 Bun을 설치합니다. &lt;br /&gt;Bun은 npm or npx로 설치해 줍니다.&lt;/p&gt;
&lt;pre id=&quot;code_1755869280382&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm install -g bun

npx cursor-talk-to-figma-socket&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;npx cursor-talk-to-figma-socket 명령어를 터미널에 실행하면 막 쌸라쏼라(?) 영어가 나오고 계속 실행되어진 상태로 유지 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;nodeJS가 없으면 안되겠죠??&lt;br /&gt;nodeJS가 설치되어 있지 않다면 npm 명령어를 사용할 수 없기 때문에 혹시 설치가 안되어 있으신 분은 아래글을 참고 바랍니다.&lt;/p&gt;
&lt;figure id=&quot;og_1755869369039&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;node.js 윈도우에서 설치하기 및 삭제&quot; data-og-description=&quot;1. 설치https://nodejs.org/위 url을 클릭하여 node JS 사이트에 접속합니다.아래와 같은 화면을 맞이 하게 될텐데요. 영어라 당황하지 마시고 설명 드리겠습니다.우선 중앙의 다운받을 수 있는 녹색 버&quot; data-og-host=&quot;kcmschool.com&quot; data-og-source-url=&quot;https://kcmschool.com/19&quot; data-og-url=&quot;https://kcmschool.com/19&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/Q8X9z/hyZC4VhnDh/xKEfQPijhSM0qyUCiKy1T0/img.jpg?width=731&amp;amp;height=562&amp;amp;face=0_0_731_562,https://scrap.kakaocdn.net/dn/soAO6/hyZylEnano/KNJkKZgv2ehsoFsbAzbmsk/img.jpg?width=731&amp;amp;height=562&amp;amp;face=0_0_731_562,https://scrap.kakaocdn.net/dn/hBYNa/hyZzKKCgHU/kcwloHNYkNYGdwUZf5Fbc0/img.jpg?width=820&amp;amp;height=682&amp;amp;face=0_0_820_682&quot;&gt;&lt;a href=&quot;https://kcmschool.com/19&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kcmschool.com/19&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/Q8X9z/hyZC4VhnDh/xKEfQPijhSM0qyUCiKy1T0/img.jpg?width=731&amp;amp;height=562&amp;amp;face=0_0_731_562,https://scrap.kakaocdn.net/dn/soAO6/hyZylEnano/KNJkKZgv2ehsoFsbAzbmsk/img.jpg?width=731&amp;amp;height=562&amp;amp;face=0_0_731_562,https://scrap.kakaocdn.net/dn/hBYNa/hyZzKKCgHU/kcwloHNYkNYGdwUZf5Fbc0/img.jpg?width=820&amp;amp;height=682&amp;amp;face=0_0_820_682');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;node.js 윈도우에서 설치하기 및 삭제&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. 설치https://nodejs.org/위 url을 클릭하여 node JS 사이트에 접속합니다.아래와 같은 화면을 맞이 하게 될텐데요. 영어라 당황하지 마시고 설명 드리겠습니다.우선 중앙의 다운받을 수 있는 녹색 버&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;kcmschool.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;2. 플러그인 연결&lt;/b&gt;&lt;br /&gt;일단 피그마를 열고 디자인 화면에서 우클릭을 화면 다음과 같은 화면을 확인할 수 있습니다.&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;715&quot; data-origin-height=&quot;609&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/2URBW/btsP11Cv50k/PJTAXMoP5146bqUxwgHYGK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/2URBW/btsP11Cv50k/PJTAXMoP5146bqUxwgHYGK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/2URBW/btsP11Cv50k/PJTAXMoP5146bqUxwgHYGK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F2URBW%2FbtsP11Cv50k%2FPJTAXMoP5146bqUxwgHYGK%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;715&quot; height=&quot;609&quot; data-origin-width=&quot;715&quot; data-origin-height=&quot;609&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;플러그인 &amp;gt; Cursor Talk To Figma MCP Plugin 클릭!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;380&quot; data-origin-height=&quot;664&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nk1pz/btsP3bYIVdR/pkgAk1qKSSrdLkT4okG5b0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nk1pz/btsP3bYIVdR/pkgAk1qKSSrdLkT4okG5b0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nk1pz/btsP3bYIVdR/pkgAk1qKSSrdLkT4okG5b0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fnk1pz%2FbtsP3bYIVdR%2FpkgAk1qKSSrdLkT4okG5b0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;380&quot; height=&quot;664&quot; data-origin-width=&quot;380&quot; data-origin-height=&quot;664&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 화면을 확인하실 수 있을꺼예요. &lt;br /&gt;빨간 부분은 채널이라는 것이고,&lt;br /&gt;파란부분은 cursor에 MCP 설정하는 내용입니다.&lt;br /&gt;&lt;br /&gt;파란색 부분의 내용을 모두 복사하세요. 그리고 cursor을 킵니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;3. Cursor에 피그마 MCP 연결&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;879&quot; data-origin-height=&quot;778&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKJMab/btsP1XGTzck/eIJydQGytkDs2ftVEIeu0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKJMab/btsP1XGTzck/eIJydQGytkDs2ftVEIeu0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKJMab/btsP1XGTzck/eIJydQGytkDs2ftVEIeu0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKJMab%2FbtsP1XGTzck%2FeIJydQGytkDs2ftVEIeu0k%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;879&quot; height=&quot;778&quot; data-origin-width=&quot;879&quot; data-origin-height=&quot;778&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 이미지에 나와 있는 순서로 들어가 커서 셋팅에서 MCP &amp;amp; Integrations 에 들어가 줍니다.&lt;br /&gt;이 부분이 MCP 설정하는 부분입니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;749&quot; data-origin-height=&quot;516&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LTzfP/btsP3yzkt6J/BgekHUUBm2mjG8KGhvoSM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LTzfP/btsP3yzkt6J/BgekHUUBm2mjG8KGhvoSM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LTzfP/btsP3yzkt6J/BgekHUUBm2mjG8KGhvoSM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLTzfP%2FbtsP3yzkt6J%2FBgekHUUBm2mjG8KGhvoSM1%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;749&quot; height=&quot;516&quot; data-origin-width=&quot;749&quot; data-origin-height=&quot;516&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 이미 MCP 연결을 해서 TalkToFigma 연결이 잘 된 상태 입니다.&lt;br /&gt;처음 MCP 연결하시는 분은 빨간 영역 (New MCP Server)를 눌러 주세요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;749&quot; data-origin-height=&quot;516&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/evEwjH/btsP27oteIJ/WVd4i0r65JZj161plIRaX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/evEwjH/btsP27oteIJ/WVd4i0r65JZj161plIRaX1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/evEwjH/btsP27oteIJ/WVd4i0r65JZj161plIRaX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FevEwjH%2FbtsP27oteIJ%2FWVd4i0r65JZj161plIRaX1%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;749&quot; height=&quot;516&quot; data-origin-width=&quot;749&quot; data-origin-height=&quot;516&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혹시 몰라서 설치한거 지워 봤는데 이렇게 나오네요? 암튼&lt;br /&gt;MCP 추가 버튼을 눌러줍니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;481&quot; data-origin-height=&quot;334&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCI5mf/btsP2vDiyVR/qC90nfK8ELl7MVa0zaCbRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCI5mf/btsP2vDiyVR/qC90nfK8ELl7MVa0zaCbRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCI5mf/btsP2vDiyVR/qC90nfK8ELl7MVa0zaCbRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCI5mf%2FbtsP2vDiyVR%2FqC90nfK8ELl7MVa0zaCbRK%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;481&quot; height=&quot;334&quot; data-origin-width=&quot;481&quot; data-origin-height=&quot;334&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아까 내용을 붙여 넣어주시면 이렇게 나올꺼예요.&lt;br /&gt;참고로 피그마 MCP 내용은 TalkToFigma 영역 부터 감싸고 있는 부분까지가 필요한 내용이예요.&lt;br /&gt;&lt;br /&gt;다른 MCP 를 추가 하신다면 mcpServers 안에 내용을 쉼표 넣어서 추가 해주시면 됩니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style7&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;4. 사용방법&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;380&quot; data-origin-height=&quot;664&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nk1pz/btsP3bYIVdR/pkgAk1qKSSrdLkT4okG5b0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nk1pz/btsP3bYIVdR/pkgAk1qKSSrdLkT4okG5b0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nk1pz/btsP3bYIVdR/pkgAk1qKSSrdLkT4okG5b0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fnk1pz%2FbtsP3bYIVdR%2FpkgAk1qKSSrdLkT4okG5b0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;380&quot; height=&quot;664&quot; data-origin-width=&quot;380&quot; data-origin-height=&quot;664&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아까 확인했던 화면에서 빨간 영역있죠 이 부분이 피그마 채널이라고 하는 부분입니다. 저 안의 내용은 어딜 선택하냐에 따라 바뀔수 있습니다.&lt;br /&gt;저 채널명을 통해 cursor에서 html,css 로 디자인을 만들수 있고&amp;nbsp;&lt;br /&gt;또한 cursor에서 피그마에게 디자인을 요청할 수도 있어요.&lt;br /&gt;&lt;br /&gt;단순한 예로 사용법을 알려드릴꼐요&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1143&quot; data-origin-height=&quot;839&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cU61nh/btsP2JORMCV/OIQosHfIcIXjCOCsw1oju0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cU61nh/btsP2JORMCV/OIQosHfIcIXjCOCsw1oju0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cU61nh/btsP2JORMCV/OIQosHfIcIXjCOCsw1oju0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcU61nh%2FbtsP2JORMCV%2FOIQosHfIcIXjCOCsw1oju0%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;1143&quot; height=&quot;839&quot; data-origin-width=&quot;1143&quot; data-origin-height=&quot;839&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;피그마 디자인에서 마크업이 필요한 부분을 마우스로 저렇게 파란색 영역으로 선택해 줍니다.&lt;br /&gt;그 영역에서 마우스 우클릭해서&lt;br /&gt;플러그인 &amp;gt; Cursor Talk To Figma MCP Plugin 클릭! &lt;br /&gt;그럼 위 화면 채널명 보이시죠? 안보인다고 하지 말아줘 녹색 부분 말하는겁니다.&lt;br /&gt;저 부분 긁어서 cursor 프롬프트를 작성해 보겠습니다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQ15MS/btsP1Vvx8BR/OBeNeL9KauaEyZvqw31TJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQ15MS/btsP1Vvx8BR/OBeNeL9KauaEyZvqw31TJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQ15MS/btsP1Vvx8BR/OBeNeL9KauaEyZvqw31TJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQ15MS%2FbtsP1Vvx8BR%2FOBeNeL9KauaEyZvqw31TJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;932&quot; height=&quot;464&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;엔터 땅 치면!!!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgO0uX/btsP2K1la78/rNny1kb9HKacj057XljPt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgO0uX/btsP2K1la78/rNny1kb9HKacj057XljPt1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgO0uX/btsP2K1la78/rNny1kb9HKacj057XljPt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgO0uX%2FbtsP2K1la78%2FrNny1kb9HKacj057XljPt1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;932&quot; height=&quot;464&quot; data-origin-width=&quot;932&quot; data-origin-height=&quot;464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 만들어준다~ 근데 알고 봤더니 아까 선택한 부분은 디자인이 아니라 이미지 부분이여서&amp;nbsp;&lt;br /&gt;차마 화면은 보여드릴꼐...&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;034&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/034.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/034.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무튼 이렇게 사용하시면 될꺼 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기타 궁금하시거나 보완해야할 부분은 언제나 환영합니다?!&lt;br /&gt;감사합니다. ^^&lt;/p&gt;</description>
      <category>Tool/cursor</category>
      <category>AI</category>
      <category>cursor</category>
      <category>Figma</category>
      <category>MCP</category>
      <category>엠씨피</category>
      <category>커서</category>
      <category>피그마</category>
      <author>커드만</author>
      <guid isPermaLink="true">https://kcmschool.tistory.com/365</guid>
      <comments>https://kcmschool.tistory.com/365#entry365comment</comments>
      <pubDate>Fri, 22 Aug 2025 23:14:15 +0900</pubDate>
    </item>
    <item>
      <title>Open Weather 회원가입 방법 및 API Key 발급 방법</title>
      <link>https://kcmschool.tistory.com/364</link>
      <description>&lt;figure id=&quot;og_1753511103528&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;Current weather and forecast - OpenWeatherMap&quot; data-og-description=&quot;OpenWeather Weather forecasts, nowcasts and history in a fast and elegant way&quot; data-og-host=&quot;openweathermap.org&quot; data-og-source-url=&quot;https://openweathermap.org/&quot; data-og-url=&quot;https://openweathermap.org/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://openweathermap.org/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://openweathermap.org/&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;Current weather and forecast - OpenWeatherMap&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;OpenWeather Weather forecasts, nowcasts and history in a fast and elegant way&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;openweathermap.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;위 사이트에 접속하면 아래와 같은 화면이 나옵니다. 표시된 부분을 클릭하여 이동해 주세요.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1480&quot; data-origin-height=&quot;622&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cmjI7c/btsPB2Gvpfk/w6wRrPv2gJuzAkV3P1bK61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cmjI7c/btsPB2Gvpfk/w6wRrPv2gJuzAkV3P1bK61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cmjI7c/btsPB2Gvpfk/w6wRrPv2gJuzAkV3P1bK61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcmjI7c%2FbtsPB2Gvpfk%2Fw6wRrPv2gJuzAkV3P1bK61%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;1480&quot; height=&quot;622&quot; data-origin-width=&quot;1480&quot; data-origin-height=&quot;622&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1472&quot; data-origin-height=&quot;505&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBe20D/btsPBLEYrxq/xCP6zwgwii8XbHN6JVGzF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBe20D/btsPBLEYrxq/xCP6zwgwii8XbHN6JVGzF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBe20D/btsPBLEYrxq/xCP6zwgwii8XbHN6JVGzF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBe20D%2FbtsPBLEYrxq%2FxCP6zwgwii8XbHN6JVGzF1%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;1472&quot; height=&quot;505&quot; data-origin-width=&quot;1472&quot; data-origin-height=&quot;505&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;회원가입을 위해 아래 내용을 작성후 아래처럼 차례대로 진행해 주세요&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1180&quot; data-origin-height=&quot;857&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/caJkKq/btsPB0IG2Ae/SU4VOhiA9B9MyeioeMazvk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/caJkKq/btsPB0IG2Ae/SU4VOhiA9B9MyeioeMazvk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/caJkKq/btsPB0IG2Ae/SU4VOhiA9B9MyeioeMazvk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcaJkKq%2FbtsPB0IG2Ae%2FSU4VOhiA9B9MyeioeMazvk%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;1180&quot; height=&quot;857&quot; data-origin-width=&quot;1180&quot; data-origin-height=&quot;857&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;Create Account 버튼을 누르면 아래와 같이 alert 팝업이 뜨는데 내용은&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;API를 어떻게 어디에 사용할건지 물어보는 부분 입니다. 저는 그냥 취소 누르겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;628&quot; data-origin-height=&quot;422&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ujhoN/btsPzDWjthb/eV4aBrhHHbsiwoSpZ4Evx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ujhoN/btsPzDWjthb/eV4aBrhHHbsiwoSpZ4Evx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ujhoN/btsPzDWjthb/eV4aBrhHHbsiwoSpZ4Evx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FujhoN%2FbtsPzDWjthb%2FeV4aBrhHHbsiwoSpZ4Evx0%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;628&quot; height=&quot;422&quot; data-origin-width=&quot;628&quot; data-origin-height=&quot;422&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;이렇게 가입하면 아까 적은 메일주소로 메일이 와있을 겁니다. 메일 확인 하는 버튼이 있는데 아래와 같이 눌러줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;659&quot; data-origin-height=&quot;743&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cB4A68/btsPAxVh76o/NUfhYEL0TlyqykIoF4cDs0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cB4A68/btsPAxVh76o/NUfhYEL0TlyqykIoF4cDs0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cB4A68/btsPAxVh76o/NUfhYEL0TlyqykIoF4cDs0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcB4A68%2FbtsPAxVh76o%2FNUfhYEL0TlyqykIoF4cDs0%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;659&quot; height=&quot;743&quot; data-origin-width=&quot;659&quot; data-origin-height=&quot;743&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;그러면 다시 메일이 또 옵니다. 메일을 확인하면&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;OpenWeatherMap API 지침 이라고 하면서 API KEY가 온것을 확인할 수 있수 있습니다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #333333;&quot;&gt;아래 화면은 크롬으로 한국번역한 내용입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;505&quot; data-origin-height=&quot;703&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bSUJ4e/btsPz1CEnhG/vKtpRZJkwtBOrJm3qAtX60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bSUJ4e/btsPz1CEnhG/vKtpRZJkwtBOrJm3qAtX60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bSUJ4e/btsPz1CEnhG/vKtpRZJkwtBOrJm3qAtX60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbSUJ4e%2FbtsPz1CEnhG%2FvKtpRZJkwtBOrJm3qAtX60%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;505&quot; height=&quot;703&quot; data-origin-width=&quot;505&quot; data-origin-height=&quot;703&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #ffffff; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;사이트 내에서 API Key를 다시 확인 하려면 로그인 후&amp;nbsp;&lt;br /&gt;우측 상단에 나의 닉네임 클릭하면 My API keys 를 클릭하면 아래와 같이 확인하실 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1475&quot; data-origin-height=&quot;528&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/p514P/btsPAyUeRtF/GkE0L2vZpHhUVz0ntBCvp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/p514P/btsPAyUeRtF/GkE0L2vZpHhUVz0ntBCvp1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/p514P/btsPAyUeRtF/GkE0L2vZpHhUVz0ntBCvp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fp514P%2FbtsPAyUeRtF%2FGkE0L2vZpHhUVz0ntBCvp1%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;1475&quot; height=&quot;528&quot; data-origin-width=&quot;1475&quot; data-origin-height=&quot;528&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음시간은 API Key를 활용하여 화면에 적용 및 확인하는 방법에 대해 알아 보겠습니다.&lt;/p&gt;</description>
      <category>API/Open Weather 날씨 API</category>
      <category>API</category>
      <category>API Key</category>
      <category>open weather</category>
      <category>openweather</category>
      <category>날씨</category>
      <category>날씨API</category>
      <author>커드만</author>
      <guid isPermaLink="true">https://kcmschool.tistory.com/364</guid>
      <comments>https://kcmschool.tistory.com/364#entry364comment</comments>
      <pubDate>Sat, 26 Jul 2025 16:07:43 +0900</pubDate>
    </item>
    <item>
      <title>cursor 단축키 설정 및 나만의 단축키 모음</title>
      <link>https://kcmschool.tistory.com/363</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;단축키 설정&lt;/b&gt;&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;660&quot; data-origin-height=&quot;753&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpB1V3/btsPxSdIqd1/KnelOaEvqXRThkFFYPPk8K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpB1V3/btsPxSdIqd1/KnelOaEvqXRThkFFYPPk8K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpB1V3/btsPxSdIqd1/KnelOaEvqXRThkFFYPPk8K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpB1V3%2FbtsPxSdIqd1%2FKnelOaEvqXRThkFFYPPk8K%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;660&quot; height=&quot;753&quot; data-origin-width=&quot;660&quot; data-origin-height=&quot;753&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 이미지 처럼 &lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;File &amp;gt; Preferences &amp;gt; Keyboard Shortcuts&lt;/span&gt;&lt;/b&gt; 으로 클릭하여 들어가 줍니다.&lt;br /&gt;또는 단축키 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;Ctrl + M&lt;/b&gt;&lt;/span&gt; 을 누르고 다시 &lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;Ctrl + S&lt;/span&gt;&lt;/b&gt; 를 누르면 화면을 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;993&quot; data-origin-height=&quot;800&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/epfV4M/btsPwstL93K/xItKhKkhz5NHoamv33953k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/epfV4M/btsPwstL93K/xItKhKkhz5NHoamv33953k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/epfV4M/btsPwstL93K/xItKhKkhz5NHoamv33953k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FepfV4M%2FbtsPwstL93K%2FxItKhKkhz5NHoamv33953k%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;993&quot; height=&quot;800&quot; data-origin-width=&quot;993&quot; data-origin-height=&quot;800&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이곳에서 단축키 변경을 할 수 있는데 너무 많아서 찾기 힘들면 상단에 검색영역(Type to search in keybindings)에서 검색하여 찾을 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;993&quot; data-origin-height=&quot;800&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/B4GOF/btsPwJPrHqZ/sQJ1De3t7vniC2KxDx1NMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/B4GOF/btsPwJPrHqZ/sQJ1De3t7vniC2KxDx1NMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/B4GOF/btsPwJPrHqZ/sQJ1De3t7vniC2KxDx1NMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB4GOF%2FbtsPwJPrHqZ%2FsQJ1De3t7vniC2KxDx1NMk%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;993&quot; height=&quot;800&quot; data-origin-width=&quot;993&quot; data-origin-height=&quot;800&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단축키를 변경할 부분을 더블클릭하면&amp;nbsp;&lt;br /&gt;키 설정하라고 팝업이 뜨는데 바로 원하는 키를 누르고 엔터를 누르면 저장 됩니다.&lt;br /&gt;혹시 누르다 잘못 키를 눌렀다면&amp;nbsp; &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;ESC&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;style5&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%; height: 173px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style4&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 21px;&quot;&gt;
&lt;td style=&quot;width: 29.6124%; height: 21px;&quot;&gt;name&lt;/td&gt;
&lt;td style=&quot;width: 17.0542%; height: 21px;&quot;&gt;단축키&lt;/td&gt;
&lt;td style=&quot;width: 53.3333%; height: 21px;&quot;&gt;비고&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 55px;&quot;&gt;
&lt;td style=&quot;width: 29.6124%; height: 55px;&quot;&gt;오른쪽 사이드 바&lt;br /&gt;(Secondary Side Bar&lt;/td&gt;
&lt;td style=&quot;width: 17.0542%; height: 55px;&quot;&gt;Ctrl + L&lt;br /&gt;&lt;br /&gt;or&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f9f9f9; color: #333333; text-align: start;&quot;&gt;Ctrl + Alt + B&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 53.3333%; height: 55px;&quot;&gt;ai 검색영역&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 38px;&quot;&gt;
&lt;td style=&quot;width: 29.6124%; height: 38px;&quot;&gt;왼쪽 사이드 바&lt;br /&gt;(Primary Side Bar)&lt;/td&gt;
&lt;td style=&quot;width: 17.0542%; height: 38px;&quot;&gt;Ctrl + B&lt;/td&gt;
&lt;td style=&quot;width: 53.3333%; height: 38px;&quot;&gt;파일 목록 &amp;amp; 검색 &amp;amp; 익스텐션 등...&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 42px;&quot;&gt;
&lt;td style=&quot;width: 29.6124%; height: 42px;&quot;&gt;Cursor: Open Edit (Command K)&lt;/td&gt;
&lt;td style=&quot;width: 17.0542%; height: 42px;&quot;&gt;Ctrl + K&lt;/td&gt;
&lt;td style=&quot;width: 53.3333%; height: 42px;&quot;&gt;파일을 열고 고치고 싶은영역에 커서 위치나 드래그하여 단축키를 누르면 ai 에게 요청할 수 있는 창이 열린다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 29.6124%; height: 17px;&quot;&gt;Terminal&lt;/td&gt;
&lt;td style=&quot;width: 17.0542%; height: 17px;&quot;&gt;Ctrl + `&lt;/td&gt;
&lt;td style=&quot;width: 53.3333%; height: 17px;&quot;&gt;터미널 창을 하단에 연다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 29.6124%;&quot;&gt;&lt;b&gt;Toggle Background Agents Sidebar&lt;/b&gt; (왼쪽 사이드바 열고 닫기)&lt;/td&gt;
&lt;td style=&quot;width: 17.0542%;&quot;&gt;&lt;span style=&quot;background-color: #f9f9f9; color: #333333; text-align: start;&quot;&gt;Ctrl + Shift + S&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 53.3333%;&quot;&gt;&lt;b&gt;GPT와의 이전 대화 기록&lt;/b&gt;, 실행했던 &lt;b&gt;Background Agent 요청들&lt;/b&gt; (예: 코드 리팩터링, 설명 요청 등)을 &lt;b&gt;모아 보여주는 사이드바&lt;/b&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;style5&quot; /&gt;
&lt;h2 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;나만의 단축키 모음&lt;/b&gt;&lt;/h2&gt;
&lt;table style=&quot;color: #333333; text-align: start; border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-style=&quot;style4&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 24.7675%;&quot;&gt;name&lt;/td&gt;
&lt;td style=&quot;width: 16.279%;&quot;&gt;단축키&lt;/td&gt;
&lt;td style=&quot;width: 58.8372%;&quot;&gt;비고&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: #f9f9f9; width: 24.7675%;&quot;&gt;Delete Line&lt;/td&gt;
&lt;td style=&quot;background-color: #f9f9f9; width: 16.279%;&quot;&gt;Ctrl + Shift + K&lt;/td&gt;
&lt;td style=&quot;background-color: #f9f9f9; width: 58.8372%;&quot;&gt;기본적으로 vscode와 연동 되지만 기존에 cursor에 설정과 중복되면서 작동하지 않으니 단축키 한번 확인후 cursor에서 재설정 해준다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 24.7675%;&quot;&gt;Join&amp;nbsp; Lines&lt;/td&gt;
&lt;td style=&quot;width: 16.279%;&quot;&gt;Ctrl + J&lt;/td&gt;
&lt;td style=&quot;width: 58.8372%;&quot;&gt;내린글자 한줄로 만들기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 24.7675%;&quot;&gt;Emmet: Balance (outward)&lt;/td&gt;
&lt;td style=&quot;width: 16.279%;&quot;&gt;&lt;span style=&quot;background-color: #f9f9f9; color: #333333; text-align: start;&quot;&gt;Ctrl + Shift + A&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 58.8372%;&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;</description>
      <category>Tool/cursor</category>
      <category>AI</category>
      <category>cursor</category>
      <category>vscode</category>
      <category>에디터</category>
      <category>커서</category>
      <category>커서 ai</category>
      <author>커드만</author>
      <guid isPermaLink="true">https://kcmschool.tistory.com/363</guid>
      <comments>https://kcmschool.tistory.com/363#entry363comment</comments>
      <pubDate>Thu, 24 Jul 2025 17:12:19 +0900</pubDate>
    </item>
    <item>
      <title>cursor 유용한 단축키 모음</title>
      <link>https://kcmschool.tistory.com/362</link>
      <description>&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;Ctrl + K&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;도움이 필요한 영역에 커서를 표시하고 단축키를 누르면 설명부분에 원하는 내용을 기입하면&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;AI가 코드를 작성해 줍니다.&lt;/span&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;652&quot; data-origin-height=&quot;326&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dFyp46/btsPg6CIY44/iwStA1zc7bBkMNk89vfikk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dFyp46/btsPg6CIY44/iwStA1zc7bBkMNk89vfikk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dFyp46/btsPg6CIY44/iwStA1zc7bBkMNk89vfikk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdFyp46%2FbtsPg6CIY44%2FiwStA1zc7bBkMNk89vfikk%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;652&quot; height=&quot;326&quot; data-origin-width=&quot;652&quot; data-origin-height=&quot;326&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;style5&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #006dd7;&quot;&gt;Ctrl + L&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;화면 좌측에 위치해 있으며 선택된 파일 또는 폴더로 선택하여 선택된 영역의 설명이나 &lt;br /&gt;코드 관련 내용에 대하여 &lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;AI에게 질문이나 도움을 받을 수 있습니다.&lt;/span&gt;&lt;/blockquote&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/GQAIr/btsPfzfpxSR/6vDCKKfVZQb9bEuMF76kS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GQAIr/btsPfzfpxSR/6vDCKKfVZQb9bEuMF76kS1/img.png&quot; data-origin-width=&quot;561&quot; data-origin-height=&quot;410&quot; data-is-animation=&quot;false&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GQAIr/btsPfzfpxSR/6vDCKKfVZQb9bEuMF76kS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGQAIr%2FbtsPfzfpxSR%2F6vDCKKfVZQb9bEuMF76kS1%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;561&quot; height=&quot;410&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xyuuy/btsPhseuFqh/c3o6jvvp8C4GriV2jjp8Mk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xyuuy/btsPhseuFqh/c3o6jvvp8C4GriV2jjp8Mk/img.png&quot; data-origin-width=&quot;561&quot; data-origin-height=&quot;410&quot; data-is-animation=&quot;false&quot; style=&quot;width: 32.5581%; margin-right: 10px;&quot; data-widthpercent=&quot;33.33&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xyuuy/btsPhseuFqh/c3o6jvvp8C4GriV2jjp8Mk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fxyuuy%2FbtsPhseuFqh%2Fc3o6jvvp8C4GriV2jjp8Mk%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;561&quot; height=&quot;410&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또한 위 @(골뱅이) 부분을 누르면 열려있는 파일이나 폴더를 선택하여 같이 묶어서 AI에게 질문할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;489&quot; data-origin-height=&quot;404&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VYRLz/btsPgEzMf4p/NpB7AQkwttZp11RkmPEjtK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VYRLz/btsPgEzMf4p/NpB7AQkwttZp11RkmPEjtK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VYRLz/btsPgEzMf4p/NpB7AQkwttZp11RkmPEjtK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVYRLz%2FbtsPgEzMf4p%2FNpB7AQkwttZp11RkmPEjtK%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;489&quot; height=&quot;404&quot; data-origin-width=&quot;489&quot; data-origin-height=&quot;404&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;style5&quot; /&gt;
&lt;blockquote data-ke-style=&quot;style1&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;기타 단축키&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&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;style5&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 30%;&quot;&gt;Ctrl + P&lt;/td&gt;
&lt;td style=&quot;width: 70%;&quot;&gt;파일 탐색&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 30%;&quot;&gt;Ctrl + Shift + P&lt;/td&gt;
&lt;td style=&quot;width: 70%;&quot;&gt;명령 팔레트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 30%;&quot;&gt;&lt;span style=&quot;background-color: #f8fbfb; color: #333333; text-align: start;&quot;&gt;Ctrl + Shift + X&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 70%;&quot;&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;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Tool/cursor</category>
      <author>커드만</author>
      <guid isPermaLink="true">https://kcmschool.tistory.com/362</guid>
      <comments>https://kcmschool.tistory.com/362#entry362comment</comments>
      <pubDate>Sun, 13 Jul 2025 14:17:51 +0900</pubDate>
    </item>
  </channel>
</rss>