<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>juram_117.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Tue, 27 Jan 2026 06:07:24 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>juram_117.log</title>
            <url>https://velog.velcdn.com/images/juram_117/profile/21c27a69-bc14-4a1b-8b4e-91d99ef40f5c/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. juram_117.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/juram_117" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Figma]]></title>
            <link>https://velog.io/@juram_117/Figma</link>
            <guid>https://velog.io/@juram_117/Figma</guid>
            <pubDate>Tue, 27 Jan 2026 06:07:24 GMT</pubDate>
            <description><![CDATA[<h1 id="figma-오토-레이아웃--디자인-기초-정리">Figma 오토 레이아웃 &amp; 디자인 기초 정리</h1>
<h2 id="1️⃣-text와-오토-레이아웃">1️⃣ Text와 오토 레이아웃</h2>
<p>일반적인 Text에는 오토 레이아웃이 바로 적용되지 않는다.</p>
<p>Text를 선택한 뒤 Ctrl + G로 그룹화하면 오토 레이아웃을 적용할 수 있다.</p>
<p>오토 레이아웃 적용 후에는</p>
<p>상·하·좌·우 여백 조절 가능</p>
<p>텍스트 글자 수에 따라 자동으로 크기 변경</p>
<p>여러 오토 레이아웃 요소를 각각 오토 레이아웃으로 감싸면
👉 <strong>순서 변경(위치 바꾸기)</strong>도 가능하다.</p>
<h2 id="2️⃣-clip-content">2️⃣ Clip Content</h2>
<p>Layout 창에서 <strong>Clip content</strong>를 활성화하면
→ 프레임(카드) 밖으로 나간 요소가 보이지 않게 된다.</p>
<p>카드 UI, 이미지 마스킹 등에 자주 사용됨.</p>
<h2 id="3️⃣-8pt-grid-system-material-design">3️⃣ 8pt Grid System (Material Design)</h2>
<p>머터리얼 디자인 가이드의 8pt 그리드 시스템이란?</p>
<p>모든 요소의 크기와 간격을 8px 단위로 맞추는 규칙</p>
<p>버튼, 카드, 텍스트, 아이콘 등은
👉 <strong>8의 배수(8, 16, 24, 32 …)</strong>로 디자인하는 것을 권장</p>
<h2 id="4️⃣-오토-레이아웃-영역-밖으로-텍스트가-나갈-때">4️⃣ 오토 레이아웃 영역 밖으로 텍스트가 나갈 때</h2>
<p>텍스트가 오토 레이아웃 영역을 벗어나는 경우
👉 <strong>Ctrl 키</strong>를 누른 채 드래그해서 직접 조절 가능</p>
<h2 id="5️⃣-hug-contents-vs-fixed">5️⃣ Hug Contents vs Fixed</h2>
<h3 id="hug-contents">Hug contents</h3>
<ul>
<li><p>자식 요소의 크기에 맞춰 부모 프레임 크기가 자동 조절</p>
</li>
<li><p>여백이 늘어나면 프레임도 같이 커짐</p>
</li>
</ul>
<h3 id="fixed">Fixed</h3>
<ul>
<li><p>입력한 값만큼 고정된 크기</p>
</li>
<li><p>내용이 바뀌어도 크기는 변하지 않음</p>
</li>
</ul>
<h2 id="6️⃣-카드--오토-레이아웃">6️⃣ 카드 + 오토 레이아웃</h2>
<p>카드에 오토 레이아웃을 적용하면
→ 내부 요소 크기가 변할 때 카드 크기도 자동으로 변경</p>
<p>반응형 UI 구성할 때 매우 유용함.</p>
<h2 id="7️⃣-typography--color-스타일-지정">7️⃣ Typography &amp; Color 스타일 지정</h2>
<p>Figma에서는 대표 Typography와 Color 스타일을 지정할 수 있다.</p>
<p><strong>Typography 예시</strong></p>
<p>Title1 / Bold / 24px</p>
<p><strong>Color 예시</strong></p>
<p>Primary / #000000</p>
<h2 id="8️⃣-컴포넌트--variants">8️⃣ 컴포넌트 &amp; Variants</h2>
<ul>
<li>아이콘을 컴포넌트로 만든 뒤 전체 선택 → <strong>Combine as variants</strong> 를 사용하면 하나의 그룹으로 묶을 수 있다.</li>
<li>Variants로 묶어두면 컴포넌트를 쉽게 교체할 수 있어 <strong>재사용</strong>에 유리하다.</li>
<li>Variants를 해제하고 싶을 경우 그룹 밖으로 빼내면 된다.</li>
</ul>
<h2 id="9️⃣-마스터-컴포넌트와-인스턴스">9️⃣ 마스터 컴포넌트와 인스턴스</h2>
<ul>
<li>마스터 컴포넌트는 직접 사용하지 않고 반드시 복사해서 사용한다.</li>
<li>마스터 컴포넌트를 수정하면 연결된 모든 인스턴스가 함께 변경된다.</li>
<li>반대로 인스턴스를 수정해도 마스터 컴포넌트에는 영향을 주지 않는다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[PHP - 서버와 클라이언트]]></title>
            <link>https://velog.io/@juram_117/PHP-%EC%84%9C%EB%B2%84%EC%99%80-%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8</link>
            <guid>https://velog.io/@juram_117/PHP-%EC%84%9C%EB%B2%84%EC%99%80-%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8</guid>
            <pubDate>Thu, 26 Jun 2025 11:00:32 GMT</pubDate>
            <description><![CDATA[<h2 id="🌐서버--server-">🌐서버 ( server )</h2>
<p>클라이언트가 보낸 요청을 받아 요청한 정보를 제공</p>
<blockquote>
</blockquote>
<p>예시 )
클라이언트 : 브라우저로 네이버 접속하면 네이버 메인 페이지 보여줘!
서버 : 네이버 서버가 요청을 받아 메인 페이지를 브라우저에 전달</p>
<h2 id="📲클라이언트--client-">📲클라이언트 ( client )</h2>
<p>서버에게 정보를 요청하는 브라우저 또는 앱</p>
<blockquote>
<p>Chrome, Firefox, 앱스토어 &gt;&gt; 애플리케이션 :: 다 클라이언트</p>
</blockquote>
<h2 id="🔄클라이언트-vs-서버-사이드-언어">🔄클라이언트 vs 서버 사이드 언어</h2>
<h3 id="-클라이언트-사이드-언어">* 클라이언트 사이드 언어</h3>
<p>브라우저에서 바로 실행 (웹서버 없이도 작동)</p>
<ul>
<li>HTML</li>
<li>CSS</li>
<li>JavaScript</li>
</ul>
<h3 id="-서버-사이드-언어">* 서버 사이드 언어</h3>
<p>서버에서만 실행 -&gt; 클라이언트 결과만 받음 
( 보안이 뛰어남, 데이터 처리에 유리 )</p>
<ul>
<li>PHP</li>
<li>JSP/Spring</li>
<li>Node.js</li>
</ul>
<h3 id="📁php-파일-업로드-처리">📁PHP 파일 업로드 처리</h3>
<p><strong>파일업로드</strong> : 사용자가 자신의 컴퓨터에서 서버로 파일을 보내는 것
ex ) 구글클래스룸에 과제를 파일로 올리는 것</p>
<p>PHP에서는 사용자가 파일을 업로드하면 자동으로 <strong>초전역변수</strong> 라는 특별한 변수를 생성함</p>
<hr>
<p><strong>*<em>파일 업로드 폼에서 입력창의 이름을 &#39;userfile&#39;이라고 했을 때, *</em></strong></p>
<blockquote>
<ol>
<li>$_FILES[&#39;userfile&#39;][&#39;name&#39;]
사용자가 업로드한 파일의 원본 이름(photo.jpg)<br></li>
<li>$_FILES[&#39;userfile&#39;][&#39;tmp_name&#39;]
 서버가 파일을 임시로 저장하는 경로(/tmp/php123abc) <br></li>
<li>$_FILES[&#39;userfile&#39;][&#39;size&#39;]
업로드된 파일의 크기 (102300바이트)<br></li>
<li>$_FILES[&#39;userfile&#39;][&#39;type&#39;]
파일의 종류(image/png, text/plain)<br></li>
<li>$_FILES[&#39;userfile&#39;][&#39;error&#39;]
파일 업로드 중 발생한 오류 코드(0이면 정상, 1~4:다양한 에러코드)</li>
</ol>
</blockquote>
<p> ==&gt; 파일을 잘 업로드 했는지, 어떤 파일인지 쉽게 관리할 수 있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[React Study - 1]]></title>
            <link>https://velog.io/@juram_117/React-Study-1</link>
            <guid>https://velog.io/@juram_117/React-Study-1</guid>
            <pubDate>Wed, 25 Jun 2025 10:26:39 GMT</pubDate>
            <description><![CDATA[<h2 id="✨spa-single-page-application란">✨SPA (Single Page Application)란?</h2>
<p>한 개의 html 파일에서 페이지를 이동하지 않고
JavaScript로 필요한 부분만 바꾸는 방식</p>
<h2 id="spa-장점">SPA 장점</h2>
<ul>
<li>새로고침이 필요없음</li>
<li>부드러운 화면 전환</li>
<li>모바일 앱처럼 동작하는 웹사이트</li>
</ul>
<h2 id="🧩-컴포넌트란">🧩 컴포넌트란?</h2>
<p>화면을 여러 개의 <strong>조각단위(컴포넌트)</strong>로 나눈 것
<strong>요소마다 컴포넌트로 분리</strong>하여 <strong>재사용</strong> 가능하고,
<strong>안의 내용만 바꿔서 다양하게 활용</strong>할 수 있음</p>
<h2 id="컴포넌트의-큰-특징">컴포넌트의 큰 특징</h2>
<blockquote>
</blockquote>
<ul>
<li>이름은 반드시 <strong>대문자로 시작</strong></li>
<li><strong>props</strong>를 통해서 데이터 전달</li>
</ul>
<h2 id="왜-컴포넌트가-중요할까">왜 컴포넌트가 중요할까?</h2>
<blockquote>
</blockquote>
<ol>
<li><strong>재사용성</strong> : 한 번 만들고 여러번 사용 가능</li>
<li><strong>유지보수</strong> :  코드가 기능별로 나뉨 &gt; 수정, 개선 쉬움</li>
<li><strong>조립식 UI</strong> : 컴포넌트를 쌓아서 전체 페이지를 구성 </li>
</ol>
<h2 id="🧾-jsx란">🧾 JSX란?</h2>
<p><strong>JavaScript XML</strong>의 줄임말
JS 안에서 <strong>HTML처럼 UI구조를 표현</strong>할 수 있음</p>
<blockquote>
</blockquote>
<p>   → 코드가 직관적이고 가독성이 좋아짐!</p>
<h2 id="📦-props란">📦 Props란?</h2>
<p><strong>Properties</strong>의 줄임말
부모 컴포넌트가 자식 컴포넌트에게 <strong>데이터를 전달할 때 사용</strong></p>
<pre><code>// User 컴포넌트 : props.name 사용
function User(props){
    return &lt;p&gt;{props.name}님 환영해요!&lt;/p&gt;
}

// App 컴포넌트 : User에 name을 전달
function App(){
    return (
        &lt;div&gt;
            &lt;User name=&quot;주람&quot;/&gt;
        &lt;/div&gt;
    )
}</code></pre><h2 id="props의-특징">Props의 특징</h2>
<blockquote>
</blockquote>
<ul>
<li><strong>읽기 전용</strong> (자식 컴포넌트에서 변경 불가)</li>
<li><strong>객체 형태</strong>로 전달 (여러 값을 한 번에 넘김)</li>
</ul>
<h2 id="🔄-state의-특징">🔄 State의 특징</h2>
<blockquote>
</blockquote>
<p>사용자의 상호작용에 따라 값이 바뀌는 데이터</p>
<pre><code>import { useState } from &quot;react&quot;; // state 사용 시 import</code></pre><ul>
<li>컴포넌트 내부에서 선언하고 내부에서 사용</li>
<li>화면에 즉시 반영</li>
<li>비동기적으로 변경됨</li>
</ul>
<h3 id="📌-예제-1--버튼-클릭하면-숫자-올라가기">📌 예제 1 : 버튼 클릭하면 숫자 올라가기</h3>
<pre><code>import { useState } from &quot;react&quot;;

function Counter() {
  const [count, setCount] = useState(0); // count라는 state 선언

  return (
    &lt;div&gt;
      &lt;p&gt;현재 숫자: {count}&lt;/p&gt;
      &lt;button onClick={() =&gt; setCount(count + 1)}&gt;+1&lt;/button&gt;
    &lt;/div&gt;
  );
}</code></pre><h3 id="📌-예제-2--좋아요-버튼-누르기">📌 예제 2 : 좋아요 버튼 누르기</h3>
<pre><code>import { useState } from &quot;react&quot;;

function Like(){
    const [liked, setLiked] = useState(false)

    return (
        &lt;button onClick={()=&gt;setLiked(!liked)}&gt;
            {liked? &#39;좋아요취소&#39;:&#39;좋아요&#39;}
        &lt;/button&gt;
    )
}</code></pre>]]></description>
        </item>
    </channel>
</rss>