<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>yj_heo.log</title>
        <link>https://velog.io/</link>
        <description>아자아자</description>
        <lastBuildDate>Tue, 27 Jan 2026 12:30:07 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>yj_heo.log</title>
            <url>https://images.velog.io/images/yj_heo/profile/211f44c0-2dbb-4dc6-95e6-746e97b1ff9c/social.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. yj_heo.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/yj_heo" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[자바스크립트: 함수 (Project ARCHIVE #4)]]></title>
            <link>https://velog.io/@yj_heo/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%ED%95%A8%EC%88%98-Project-ARCHIVE-4</link>
            <guid>https://velog.io/@yj_heo/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%ED%95%A8%EC%88%98-Project-ARCHIVE-4</guid>
            <pubDate>Tue, 27 Jan 2026 12:30:07 GMT</pubDate>
            <description><![CDATA[<h2 id="1-선언-방식의-변화">1. 선언 방식의 변화</h2>
<h4 id="1-옛날-방식-function-declaration">(1) 옛날 방식 (Function Declaration)</h4>
<p>function 키워드 사용.
호이스팅(Hoisting) 지원: 함수를 아래에 만들어도 위에서 실행 가능. (가독성을 해칠 수 있음)</p>
<pre><code>function add(a, b) {
  return a + b;
}</code></pre><h4 id="2-요즘-방식-arrow-function-⭐">(2) 요즘 방식 (Arrow Function) ⭐</h4>
<p>const와 =&gt; 사용.
호이스팅 불가: 반드시 선언을 먼저 해야 실행 가능. (예측 가능성 UP)</p>
<pre><code>const add = (a, b) =&gt; {
  return a + b;
};</code></pre><h2 id="2-핵심-중괄호-와-return의-관계-세트-메뉴">2. 핵심: 중괄호 {}와 return의 관계 (세트 메뉴)</h2>
<p>화살표 함수는 코드가 짧으면 괄호를 생략할 수 있는 강력한 기능이 있다. 단, 규칙이 있다.</p>
<h4 id="1-중괄호가-있으면-👉-return-필수">(1) 중괄호가 있으면? 👉 return 필수!</h4>
<p>포장지({})로 감쌌으면, 배달(return)을 명시해야 한다.</p>
<pre><code>// ❌ 오답 (undefined 반환)
const toPyung = (m2) =&gt; { m2 * 0.3 } 

// ✅ 정답
const toPyung = (m2) =&gt; { return m2 * 0.3 }</code></pre><h4 id="2-중괄호가-없으면-👉-return-생략-자동-반환">(2) 중괄호가 없으면? 👉 return 생략! (자동 반환)</h4>
<p>코드가 한 줄이라면 포장지를 벗겨버리자. 알아서 값을 반환해준다. (암시적 반환)</p>
<pre><code>// 가장 깔끔한 실무 코드
const toPyung = (m2) =&gt; m2 * 0.3;</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[자바스크립트: 반복문 (Project ARCHIVE #3)]]></title>
            <link>https://velog.io/@yj_heo/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EB%B0%98%EB%B3%B5%EB%AC%B8-Project-ARCHIVE-3</link>
            <guid>https://velog.io/@yj_heo/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EB%B0%98%EB%B3%B5%EB%AC%B8-Project-ARCHIVE-3</guid>
            <pubDate>Fri, 23 Jan 2026 11:22:04 GMT</pubDate>
            <description><![CDATA[<h2 id="1-반복문">1. 반복문</h2>
<p>데이터가 3개면 console.log를 3번 쓰면 되지만, 100개라면? 반복문이 필수다.</p>
<h4 id="1-for-문-수동-조작"><strong>1) for 문 (수동 조작)</strong></h4>
<p>시작점, 끝점, 증감(보폭)을 직접 설정한다.</p>
<p>장점: 순서를 내 맘대로(거꾸로, 짝수만) 조절 가능.
단점: 문법이 복잡하고, 조건 설정을 잘못하면 무한 루프에 빠질 위험이 있다.</p>
<pre><code>// i가 0부터 시작해서; 개수보다 작을 때까지; 1씩 증가
for (let i = 0; i &lt; products.length; i++) {
    console.log(products[i].name);
}</code></pre><h4 id="2-foreach-문-자동-주행-⭐추천">2) forEach 문 (자동 주행) ⭐추천</h4>
<p>배열에 들어있는 요소를 처음부터 끝까지 알아서 하나씩 꺼내준다.</p>
<p>장점: i를 신경 쓸 필요가 없어 코드가 깔끔하고 안전하다.
실무: 데이터를 화면에 단순 나열할 때 가장 많이 쓴다.</p>
<pre><code>// item: 꺼내진 상품 하나하나 (객체)
products.forEach(function(item) {
    console.log(item.name + &quot;의 가격: &quot; + item.price);
});</code></pre><h4 id="deep-dive-1-템플릿-리터럴-백틱-">Deep Dive 1. 템플릿 리터럴 (백틱 `)</h4>
<p>&quot;<a href='#'>&quot; + name + &quot;</a>&quot;
최신 자바스크립트(ES6)에서는 <strong>백틱(Backtick, 숫자 1 옆에 있는 ~ 키)</strong>을 쓰이며, 디자이너가 일러스트레이터에서 텍스트 박스 만들고 글자 쓰는 거랑 똑같다.</p>
<pre><code>const name = &quot;ARCHIVE 소파&quot;;
const price = 300000;

// ❌ 옛날 방식 (더하기 지옥)
console.log(&quot;상품명은 &quot; + name + &quot;이고, 가격은 &quot; + price + &quot;원 입니다.&quot;);

// ✅ 최신 방식 (백틱 사용)
// ${변수명} 자리에 변수를 쏙 집어넣으면 끝!
console.log(`상품명은 ${name}이고, 가격은 ${price}원 입니다.`);</code></pre><h4 id="html-예제">HTML 예제</h4>
<pre><code>// 그냥 HTML 쓰듯이 쭉 쓰고 변수만 ${ }로
const htmlCode = `&lt;div class=&quot;card&quot;&gt;
    &lt;h2&gt;${name}&lt;/h2&gt;
    &lt;p&gt;${price}원&lt;/p&gt;
&lt;/div&gt;`;</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[자바스크립트: 배열 (Project ARCHIVE #2)]]></title>
            <link>https://velog.io/@yj_heo/%EB%B0%B0%EC%97%B4%EA%B3%BC-%EB%B0%98%EB%B3%B5%EB%AC%B8-Project-ARCHIVE-2</link>
            <guid>https://velog.io/@yj_heo/%EB%B0%B0%EC%97%B4%EA%B3%BC-%EB%B0%98%EB%B3%B5%EB%AC%B8-Project-ARCHIVE-2</guid>
            <pubDate>Thu, 22 Jan 2026 12:51:35 GMT</pubDate>
            <description><![CDATA[<h2 id="1-배열-array정리-및-객체-object의-관계">1. 배열 (Array)정리 및 객체 (Object)의 관계</h2>
<h4 id="1-배열-array--">1) 배열 (Array): [ ]</h4>
<p>개념: 연관된 데이터를 순서대로 담는 컨테이너 (트럭).
특징: 순서(Index)가 중요하며, 0번부터 시작한다.</p>
<h4 id="2-객체-object--">2) 객체 (Object): { }</h4>
<p>개념: 하나의 대상에 대한 상세 정보를 Key: Value로 묶은 포장 박스.
특징: 이름(Key)으로 값을 찾는다. (예: product.price)</p>
<h4 id="3-끝판왕-배열-안에-객체-array-of-objects">3) 끝판왕: 배열 안에 객체 (Array of Objects)</h4>
<p>실무 데이터의 99%는 이 구조다. &quot;상품 리스트 트럭([]) 안에 개별 상품 박스({})가 실려있는 형태&quot;다.</p>
<pre><code>const products = [
    { name: &quot;벨벳 소파&quot;, price: 300000, isSoldOut: false }, // 0번
    { name: &quot;우드 테이블&quot;, price: 500000, isSoldOut: true }, // 1번
    { name: &quot;플로어 램프&quot;, price: 50000, isSoldOut: false }  // 2번
];</code></pre><h3 id="1-뒤쪽end에서-조작하기">1. 뒤쪽(End)에서 조작하기</h3>
<p>데이터가 순서대로 쌓이고, 맨 마지막 것부터 건드리는 방식이다. (Stack 구조)</p>
<h4 id="1-push--밀어-넣기-추가">1) push() : 밀어 넣기 (추가)</h4>
<p>상황: 장바구니 담기, 게시판 댓글 작성.
동작: 배열의 맨 끝에 데이터를 추가한다.</p>
<pre><code>const cart = [&quot;소파&quot;, &quot;침대&quot;];
cart.push(&quot;책상&quot;); 
// 결과: [&quot;소파&quot;, &quot;침대&quot;, &quot;책상&quot;]</code></pre><h4 id="2-pop--꺼내기-삭제">2) pop() : 꺼내기 (삭제)</h4>
<p>상황: &#39;실행 취소(Undo)&#39;, 뒤로 가기.
동작: 배열의 맨 끝에 있는 데이터를 삭제한다.</p>
<pre><code>cart.pop(); 
// 결과: [&quot;소파&quot;, &quot;침대&quot;] (방금 넣은 책상이 삭제됨)</code></pre><h3 id="2-앞쪽front에서-조작하기">2. 앞쪽(Front)에서 조작하기</h3>
<p>데이터의 순서(Index)가 전체적으로 밀리거나 당겨진다.</p>
<h4 id="1-unshift--새치기-추가">1) unshift() : 새치기 (추가)</h4>
<p>상황: 최신 뉴스, 인스타그램 피드 (최신 글이 맨 위에 와야 함).
동작: 배열의 <strong>맨 앞(0번)</strong>에 데이터를 추가하고, 나머지를 뒤로 민다.</p>
<pre><code>const feed = [&quot;어제 글&quot;, &quot;그저께 글&quot;];
feed.unshift(&quot;방금 올린 글&quot;);
// 결과: [&quot;방금 올린 글&quot;, &quot;어제 글&quot;, &quot;그저께 글&quot;]</code></pre><h4 id="2-shift--입장하기-삭제">2) shift() : 입장하기 (삭제)</h4>
<p>상황: 선착순 대기열 처리, 할 일 목록 완료 처리.
동작: 배열의 맨 앞(0번) 데이터를 삭제하고, 뒤에 있는 것들을 앞으로 당긴다.</p>
<pre><code>feed.shift();
// 결과: [&quot;어제 글&quot;, &quot;그저께 글&quot;] (맨 앞글 삭제됨)</code></pre><h4 id="3-중간middle-저격하기-스나이퍼">3. 중간(Middle) 저격하기: 스나이퍼</h4>
<p>맨 앞이나 뒤가 아니라, 내가 원하는 위치를 콕 집어서 처리한다. 가장 중요하다.</p>
<p>⭐ splice() : 수술하기
문법: 배열.splice(시작인덱스, 삭제할개수)
상황: 장바구니 목록 중 특정 상품의 &#39;X&#39; 버튼을 눌러 삭제할 때.</p>
<pre><code>const playlist = [&quot;아이유&quot;, &quot;박효신&quot;, &quot;뉴진스&quot;];
// 박효신(1번 인덱스)만 지우고 싶다면?

// &quot;1번 자리에서 시작해서, 1개만 지워줘.&quot;
playlist.splice(1, 1);

console.log(playlist); 
// 결과: [&quot;아이유&quot;, &quot;뉴진스&quot;]</code></pre><h2 id="2-반복문">2. 반복문</h2>
<p>데이터가 3개면 console.log를 3번 쓰면 되지만, 100개라면? 반복문이 필수다.</p>
<h4 id="1-for-문-수동-조작"><strong>1) for 문 (수동 조작)</strong></h4>
<p>시작점, 끝점, 증감(보폭)을 직접 설정한다.</p>
<p>장점: 순서를 내 맘대로(거꾸로, 짝수만) 조절 가능.
단점: 문법이 복잡하고, 조건 설정을 잘못하면 무한 루프에 빠질 위험이 있다.</p>
<pre><code>// i가 0부터 시작해서; 개수보다 작을 때까지; 1씩 증가
for (let i = 0; i &lt; products.length; i++) {
    console.log(products[i].name);
}</code></pre><h4 id="2-foreach-문-자동-주행-⭐추천">2) forEach 문 (자동 주행) ⭐추천</h4>
<p>배열에 들어있는 요소를 처음부터 끝까지 알아서 하나씩 꺼내준다.</p>
<p>장점: i를 신경 쓸 필요가 없어 코드가 깔끔하고 안전하다.
실무: 데이터를 화면에 단순 나열할 때 가장 많이 쓴다.</p>
<pre><code>// item: 꺼내진 상품 하나하나 (객체)
products.forEach(function(item) {
    console.log(item.name + &quot;의 가격: &quot; + item.price);
});</code></pre><h4 id="deep-dive-1-템플릿-리터럴-백틱-">Deep Dive 1. 템플릿 리터럴 (백틱 `)</h4>
<p>&quot;<a href='#'>&quot; + name + &quot;</a>&quot;
최신 자바스크립트(ES6)에서는 <strong>백틱(Backtick, 숫자 1 옆에 있는 ~ 키)</strong>을 쓰이며, 디자이너가 일러스트레이터에서 텍스트 박스 만들고 글자 쓰는 거랑 똑같다.</p>
<pre><code>const name = &quot;ARCHIVE 소파&quot;;
const price = 300000;

// ❌ 옛날 방식 (더하기 지옥)
console.log(&quot;상품명은 &quot; + name + &quot;이고, 가격은 &quot; + price + &quot;원 입니다.&quot;);

// ✅ 최신 방식 (백틱 사용)
// ${변수명} 자리에 변수를 쏙 집어넣으면 끝!
console.log(`상품명은 ${name}이고, 가격은 ${price}원 입니다.`);</code></pre><h4 id="html-예제">HTML 예제</h4>
<pre><code>// 그냥 HTML 쓰듯이 쭉 쓰고 변수만 ${ }로
const htmlCode = `&lt;div class=&quot;card&quot;&gt;
    &lt;h2&gt;${name}&lt;/h2&gt;
    &lt;p&gt;${price}원&lt;/p&gt;
&lt;/div&gt;`;</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[자바스크립트: 변수와 조건문 (Project ARCHIVE #1)]]></title>
            <link>https://velog.io/@yj_heo/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EB%B3%80%EC%88%98%EC%99%80-%EC%A1%B0%EA%B1%B4%EB%AC%B8-Project-ARCHIVE-1</link>
            <guid>https://velog.io/@yj_heo/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EB%B3%80%EC%88%98%EC%99%80-%EC%A1%B0%EA%B1%B4%EB%AC%B8-Project-ARCHIVE-1</guid>
            <pubDate>Wed, 21 Jan 2026 06:04:59 GMT</pubDate>
            <description><![CDATA[<h2 id="1-변수-variable-데이터를-담는-그릇">1. 변수 (Variable): 데이터를 담는 &#39;그릇&#39;</h2>
<p>디자인할 때 레이어에 이름을 붙이거나, 컴포넌트를 만드는 것과 같다. 값을 재사용하기 위해 이름표를 붙여 저장하는 것이다.</p>
<h4 id="const-상수">const (상수)</h4>
<p>개념: 한 번 선언하면 절대 바꿀 수 없는 값.
디자인 비유: 디자인 시스템의 Primary Color나 Logo. (Lock 걸린 레이어)
사용처: 브랜드명, 도메인 주소, 고유 ID 등.</p>
<h4 id="let-변수">let (변수)</h4>
<p>개념: 상황에 따라 계속 바뀌는 값.
디자인 비유: Page Number나 Toggle State.
사용처: 스크롤 위치, 장바구니 수량, 현재 탭 번호 등.</p>
<h4 id="javascript">JavaScript</h4>
<p>// 쇼핑몰 &#39;ARCHIVE&#39; 예시</p>
<pre><code>const brandName = &quot;ARCHIVE&quot;;  // 절대 변하지 않음 (const)
let productCount = 50;        // 재고는 변할 수 있음 (let)

productCount = 49;            // 재고 변경 가능
// brandName = &quot;Gagu&quot;;        // 에러! (const는 변경 불가)</code></pre><h4 id="자료형-data-type-그릇에-담긴-내용물">자료형 (Data Type): 그릇에 담긴 &#39;내용물&#39;</h4>
<p>변수라는 그릇에 담기는 데이터의 형태다. 실무에서 가장 많이 쓰이는 3가지.</p>
<p>String (문자열): 따옴표(&quot;&quot;, &#39;&#39;)로 감싼 글자.
Number (숫자): 연산이 가능한 숫자.
Boolean (논리형): true / false 딱 두 가지 상태. (스위치 ON/OFF)</p>
<pre><code>const productName = &quot;벨벳 라운지 체어&quot;; // String
const price = 300000;                 // Number
let isSoldOut = false;                // Boolean (품절 여부)</code></pre><h2 id="2-연산자-operator">2. 연산자 (Operator)</h2>
<p>데이터를 가공하거나 비교할 때 사용한다.</p>
<p>비교 연산자 (===)
중요: 자바스크립트에서는 &#39;같다&#39;를 표현할 때 = 하나가 아니라 <strong>=== (등호 3개)</strong>를 써야 정확하다.
(= 하나는 값을 &#39;대입&#39;할 때 쓴다.)</p>
<pre><code>const myMoney = 200000;
const chairPrice = 300000;
console.log(myMoney &gt; chairPrice); // false (살 수 없음)</code></pre><p><strong>Intro: True/False가 아니다</strong>
자바스크립트의 논리 연산자는 단순히 참/거짓을 알려주는 게 아니라, <strong>&quot;선택된 값(Value)&quot;</strong>을 반환한다. 이 원리를 모르면 화면에 의도치 않은 0이 출력되거나, 기본값 설정이 꼬이는 버그를 만나게 된다. 실무 필수 문법인 단축 평가, Truth/Falsy, 그리고 Null 병합 연산자를 정리한다.</p>
<h4 id="1-truthy-vs-falsy-참과-거짓의-기준">1) Truthy vs Falsy (참과 거짓의 기준)</h4>
<p>자바스크립트는 모든 값을 참 아니면 거짓으로 분류한다. 아래 5가지(Falsy)만 외우면, 나머지는 다 참(Truthy)이다.</p>
<p>false
0 (숫자 0) 🚨 주의!
&quot;&quot; (빈 문자열)
null
undefined</p>
<p><em>Tip: &quot;0&quot;(문자열 0), &quot;false&quot;, &quot; &quot; (공백)은 안에 내용물이 있으므로 <strong>참(Truthy)</strong>이다.</em></p>
<h4 id="2-and-연산자---깐깐한-문지기-guard">2) AND 연산자 (&amp;&amp;) : 깐깐한 문지기 (Guard)</h4>
<p>원리: 앞에서부터 보다가 <strong>하나라도 거짓(Falsy)</strong>이면 그 값을 반환하고 끝낸다. (끝까지 다 참이어야 마지막 값을 줌)</p>
<p>용도: &quot;조건부 실행&quot;. A가 있을 때만 B를 보여줘라.</p>
<pre><code>const isLoggedIn = true;
const welcomeMsg = isLoggedIn &amp;&amp; &quot;환영합니다!&quot;;

console.log(welcomeMsg); // &quot;환영합니다!&quot;</code></pre><h4 id="3-or-연산자---낙천가-default-value">3) OR 연산자 (||) : 낙천가 (Default Value)</h4>
<p>원리: 앞에서부터 보다가 <strong>하나라도 참(Truthy)</strong>이면 그 값을 반환하고 끝낸다.</p>
<p>용도: &quot;빈칸 채우기(기본값)&quot;. 입력이 없으면 기본값을 써라.</p>
<pre><code>const userName = &quot;&quot;; // 입력 안 함 (Falsy)
const displayName = userName || &quot;익명&quot;; 

console.log(displayName); // &quot;익명&quot;
// 설명: 앞이 거짓이니, 뒤에 있는 &quot;익명&quot;을 선택함.</code></pre><h4 id="4-실무-버그-1순위-숫자-0의-함정">4) 실무 버그 1순위: 숫자 &#39;0&#39;의 함정</h4>
<p>&amp;&amp; 연산자를 쓸 때 0은 거짓(Falsy)이므로, 0이라는 값 자체가 반환되어 화면에 출력되는 문제가 발생한다.</p>
<pre><code>const count = 0; // 0개

// 의도: 0개니까 아무것도 출력 안 하겠지?
// 현실: 0은 Falsy니까, 0이라는 &#39;값&#39; 자체가 반환되어 화면에 찍힘.
const result = count &amp;&amp; &quot;결과 있음&quot;; 

console.log(result); // 0 (숫자가 뚱하니 출력됨)</code></pre><p>0을 거르고 싶을 땐, 확실한 <strong>조건식(부등호)</strong>을 써서 false를 만들어야 한다.</p>
<pre><code>// 0 &gt; 0 은 false(찐 boolean)이므로 안전함.
const safeResult = (count &gt; 0) &amp;&amp; &quot;결과 있음&quot;;</code></pre><h4 id="5-구원-투수--null-병합-연산자">5) 구원 투수: ?? (Null 병합 연산자)</h4>
<p>|| 연산자는 0이나 &quot;&quot;도 거짓 취급해서 무시해버린다. (할인율 0%인데 할인 없음 처리 등) 이때 null과 undefined만 콕 집어서 거르는 ??를 사용한다.</p>
<pre><code>const price = 0; // 무료 (유효한 데이터)

// ❌ || 사용 시: 0을 무시하고 3000원 결제됨
console.log(price || 3000); // 3000

// ✅ ?? 사용 시: 0을 인정해줌
console.log(price ?? 3000); // 0</code></pre><p><em>요약 가이드
입력창 빈칸(&quot;&quot;) 처리할 때: 👉 || 사용
숫자 0도 데이터로 인정해야 할 때: 👉 ?? 사용</em></p>
<h2 id="3-조건문-if-else">3. 조건문 (If-Else)</h2>
<p>특정 조건에 따라 다른 코드를 실행하는 로직. 엑셀의 IF 함수나, 디자인의 Responsive(반응형) 분기점과 비슷하다.</p>
<p><strong>실습: 회원 등급별 할인 로직</strong>
&quot;VIP 회원이면 10% 할인, 아니면 5% 할인&quot;을 코드로 구현해 보았다.</p>
<pre><code>const VIP_LEVEL = &quot;VIP&quot;; // 기준값 (상수)
let myLevel = &quot;NORMAL&quot;;  // 나의 현재 등급 (변수)

if (myLevel === VIP_LEVEL) {
  console.log(&quot;10% 할인 쿠폰 발급&quot;);
} else {
  // 굳이 &#39;myLevel !== VIP_LEVEL&#39; 조건을 다시 쓸 필요 없다.
  console.log(&quot;신규/일반 5% 할인 쿠폰 발급&quot;);
}</code></pre><p>_💡 Insight: 전역 변수(Global Variable) 위 코드에서 VIP_LEVEL과 myLevel은 코드 최상단(대지 바깥)에 선언되었기 때문에 전역 변수다. 어디서든 가져다 쓸 수 있지만, 너무 남발하면 꼬일 수 있으니 주의하자. (마치 모든 레이어를 그룹 없이 최상위에 풀어놓
는 것과 같다!)</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[배너 작업]]></title>
            <link>https://velog.io/@yj_heo/%EB%B0%B0%EB%84%88-%EC%9E%91%EC%97%85</link>
            <guid>https://velog.io/@yj_heo/%EB%B0%B0%EB%84%88-%EC%9E%91%EC%97%85</guid>
            <pubDate>Wed, 09 Aug 2023 09:00:09 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/yj_heo/post/c970162d-b718-4194-a350-76ad9b5e5ab4/image.jpg" alt=""></p>
<hr>
<p><img src="https://velog.velcdn.com/images/yj_heo/post/4b76ebca-5d6f-4c94-9c93-955772b371be/image.png" alt=""></p>
<hr>
<p><img src="https://velog.velcdn.com/images/yj_heo/post/79d2e232-d821-44d9-8814-f8e75a80c506/image.jpg" alt=""></p>
<hr>
<p><img src="https://velog.velcdn.com/images/yj_heo/post/5266423a-54b9-4a11-8fd1-284f7d8148d7/image.jpg" alt=""></p>
<hr>
<p><img src="https://velog.velcdn.com/images/yj_heo/post/e6859b41-3642-4f29-a87e-14bdf7a1ea10/image.jpg" alt=""></p>
<hr>
<p><img src="https://velog.velcdn.com/images/yj_heo/post/2d54fe46-6856-4c9f-a36a-de6ec455a22e/image.jpg" alt=""></p>
<hr>
<p><img src="https://velog.velcdn.com/images/yj_heo/post/1df8c1a2-2705-46c8-8fa6-20d4155f583a/image.jpg" alt=""></p>
<hr>
<p><img src="https://velog.velcdn.com/images/yj_heo/post/31473ef6-a9f0-47ed-9861-a70368031bae/image.jpg" alt=""></p>
<hr>
<p><img src="https://velog.velcdn.com/images/yj_heo/post/5e470d7f-b46e-455b-9e0d-4865e617b8f9/image.jpg" alt=""></p>
<hr>
<p><img src="https://velog.velcdn.com/images/yj_heo/post/6b4f1729-1521-4b7d-88a5-81c335d9ecdd/image.jpg" alt=""></p>
<hr>
<p><img src="https://velog.velcdn.com/images/yj_heo/post/f3bdde73-83b5-4c37-abbe-3d6f93e7a652/image.jpg" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[UX UX UCD 차이]]></title>
            <link>https://velog.io/@yj_heo/UX-UX-UCD-%EC%B0%A8%EC%9D%B4</link>
            <guid>https://velog.io/@yj_heo/UX-UX-UCD-%EC%B0%A8%EC%9D%B4</guid>
            <pubDate>Thu, 02 Dec 2021 10:00:04 GMT</pubDate>
            <description><![CDATA[<h2 id="uxuser-experience-란">UX(User Experience) 란</h2>
<h4 id="전체적-경험">전체적 경험</h4>
<h2 id="uiuser-interface-란">UI(User Interface) 란</h2>
<h4 id="구성요소-공간-접점">구성요소, 공간, 접점</h4>
<h2 id="usability사용성-란">USABILITY(사용성) 란</h2>
<h4 id="측정">측정</h4>
<h2 id="ucduser-centered-design-란">UCD(User Centered Design) 란</h2>
<h4 id="마음가짐">마음가짐?</h4>
<h2 id="design-thinking-란">Design Thinking 란</h2>
<h3 id="이해하기">이해하기</h3>
<h4 id="공감---문제-정의">공감 -&gt; 문제 정의</h4>
<pre><code>  - 공감: 사용자를 더 잘 이해하기 위해 리서치 수행
  - 문제정의: 리서치 결과와 사용자가 가진 문제를 연결</code></pre><h3 id="탐구하기">탐구하기</h3>
<h4 id="아이디어---프로토타입">아이디어 -&gt; 프로토타입</h4>
<pre><code>  - 아이디어: 문제 해결을 위한 창의적 아이디어 도출
  - 프로토타입: 아이디어를 눈으로 볼 수 있고 만질 수 있게 표현</code></pre><h3 id="구체화하기">구체화하기</h3>
<h4 id="검증---실행">검증 -&gt; 실행</h4>
<pre><code>  - 검증: 사용자로부터 다시 피드백 얻기
  - 실행: 목표를 달성하기 위해 실행</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[웹 접근성 향상]]></title>
            <link>https://velog.io/@yj_heo/%EC%9B%B9-%EC%A0%91%EA%B7%BC%EC%84%B1-%ED%96%A5%EC%83%81</link>
            <guid>https://velog.io/@yj_heo/%EC%9B%B9-%EC%A0%91%EA%B7%BC%EC%84%B1-%ED%96%A5%EC%83%81</guid>
            <pubDate>Tue, 25 May 2021 14:50:05 GMT</pubDate>
            <description><![CDATA[<h2 id="웹-접근성-향상">웹 접근성 향상</h2>
<h3 id="1-이미지-대체-텍스트-">1. 이미지 대체 텍스트 :</h3>
<h4 id="alt-속성으로-대체-택스트를-지정해주어야-한다">alt 속성으로 대체 택스트를 지정해주어야 한다</h4>
<h3 id="2-스킵-네비게이션-">2. 스킵 네비게이션 :</h3>
<h4 id="alt-링크가-많은-페이지를-효율적으로-이용하기-위해서-스킵-네비게이션바로가기링크를-제공해야-한다">alt 링크가 많은 페이지를 효율적으로 이용하기 위해서 스킵 네비게이션(바로가기)링크를 제공해야 한다</h4>
<h3 id="3-문서의-구성화-">3. 문서의 구성화 :</h3>
<h4 id="헤딩태그h1h6-목록uloldl-문단p-태그-등을-이용하여-내용에-맞게-태그를-분리하여야-한다">헤딩태그(h1~h6) 목록(ul,ol,dl) 문단(p) 태그 등을 이용하여 내용에 맞게 태그를 분리하여야 한다</h4>
<h3 id="4-메타태그-활용-">4. 메타태그 활용 :</h3>
<h4 id="보통-검색엔진-최적화seo를-위해-메타-정보를-설정하며-html-문서의-head-태그-사이에-입력하고-타이틀키워드만든사람의-정보-등-웹페이지의-정보를-제공한다">보통 검색엔진 최적화(SEO)를 위해 메타 정보를 설정하며, html 문서의 head 태그 사이에 입력하고 타이틀,키워드,만든사람의 정보 등 웹페이지의 정보를 제공한다.</h4>
]]></description>
        </item>
        <item>
            <title><![CDATA[css position 가운데 정렬]]></title>
            <link>https://velog.io/@yj_heo/css-position-%EA%B0%80%EC%9A%B4%EB%8D%B0-%EC%A0%95%EB%A0%AC</link>
            <guid>https://velog.io/@yj_heo/css-position-%EA%B0%80%EC%9A%B4%EB%8D%B0-%EC%A0%95%EB%A0%AC</guid>
            <pubDate>Fri, 21 May 2021 08:00:18 GMT</pubDate>
            <description><![CDATA[<h1 id="css-position">css position</h1>
<p>** 종류 **
** 1. ** static(기본값) : 요소를 일반적 문서 흐름에 따라 배치합니다.</p>
<p>** 2. ** relative : 자기 자신을 기준으로 top, right, bottom, left의 값에 따라 적용하며 다른 요소에는 영향을 주지 않습니다.</p>
<p>** 3. ** absolute : 일반적은 문서 흐름에서 제거하고, 가장 가까운 위치 지정 상위 요소에 대해 상대적으로 배치합니다. 상위 요소중에 지정 요소가 없다면 초기 컨테이닝 블록을 기준으로 합니다.</p>
<p>** 4. ** fixed : 일반적인 문서 흐름에서 제거하고, 페이지 레이아웃에 공간도 배정하지 않습니다. 모든 페이지의 같은 위치에(고정) 출력 됩니다.</p>
<p>이렇게 4가지의 속성이 있으며 요소를 배치하는 방법을 지정합니다. top, right, bottom, left 속성을 통해 배치 할 최종 위치를 결정합니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[웹 접근성과 웹 표준이란?]]></title>
            <link>https://velog.io/@yj_heo/%EC%9B%B9-%EC%A0%91%EA%B7%BC%EC%84%B1%EA%B3%BC-%EC%9B%B9-%ED%91%9C%EC%A4%80%EC%9D%B4%EB%9E%80</link>
            <guid>https://velog.io/@yj_heo/%EC%9B%B9-%EC%A0%91%EA%B7%BC%EC%84%B1%EA%B3%BC-%EC%9B%B9-%ED%91%9C%EC%A4%80%EC%9D%B4%EB%9E%80</guid>
            <pubDate>Thu, 20 May 2021 14:06:10 GMT</pubDate>
            <description><![CDATA[<h1 id="웹-표준과-웹-접근성">웹 표준과 웹 접근성</h1>
<h2 id="웹-표준">웹 표준</h2>
<p>웹 표준이란 브라우저 종류 및 버전에 따른 기능 차이에 대해 호환이 가능하도록 제시된 표준으로
기종 혹은 플랫폼에 따라 달리 구현되는 기술을 동일하고 어느 한쪽에 최적화되어 치우치지 않도록 공통요소를 통해 웹 페이지를 제작 하는 것을 말한다.</p>
<h3 id="웹-표준-장점">웹 표준 장점</h3>
<p><strong>1.</strong> 수정 및 운영관리가 쉽다
<strong>2.</strong> 접근성이 향상된다
<strong>3.</strong> 검색엔진의 최적화(SEO)
<strong>4.</strong> 효율적인 마크업
<strong>5.</strong> 호환성 가능(크로스 브라우징)
<strong>6.</strong> 브라우저와 os 관계없이 하나의 모드로 코든 플랫폼 대응 가능
<strong>7.</strong> 구조와 표현의 분리가 가능</p>
<p><strong>모든 사용자들이 동일한 웹사이트를 볼 수 있도록 웹 표준기술 작업이 필요하며 웹 표준 준수는 웹 접근성 준수를 위한 핵심이다.</strong></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[JavaScript 호이스팅]]></title>
            <link>https://velog.io/@yj_heo/JavaScript-%ED%98%B8%EC%9D%B4%EC%8A%A4%ED%8C%85</link>
            <guid>https://velog.io/@yj_heo/JavaScript-%ED%98%B8%EC%9D%B4%EC%8A%A4%ED%8C%85</guid>
            <pubDate>Tue, 08 Dec 2020 15:07:23 GMT</pubDate>
            <description><![CDATA[<h1 id="자바스크립트-호이스팅">자바스크립트 호이스팅</h1>
<p>오늘은 자바스크립트 호이스팅에 대해 이야기 해보겠습니다.</p>
<p>자바스크립트에는 호이스팅이라는 것이 있는데, 변수 및 함수를 유효범위 내에 최상단으로 끌어 올리는 것을 말합니다.</p>
<h2 id="함수-호이스팅">함수 호이스팅</h2>
<pre><code class="language-javascript">b();
function b(){
  console.log(&#39;hyj&#39;);
};</code></pre>
<p>위 코드를 보면 호출이 함수 선언보다 위에 있지만 함수선언문은 <strong>호이스팅</strong>으로 인해 유효범위까지 최상단으로 끌어 올려지기 때문에 정상적으로 작동을 합니다.</p>
<pre><code class="language-javascript">function b(){
  console.log(&#39;hyj&#39;);
};
b();</code></pre>
<p>위 코드는 자바스크립트엔진에 의해 호이스팅 된 코드입니다.</p>
<h2 id="변수-호이스팅">변수 호이스팅</h2>
<pre><code class="language-javascript">  function fruitName(){
    console.log(&quot;종류: &quot; + fruit); //종류: undefined
      var fruit = &quot;포도&quot;;
      console.log(&quot;이름: &quot; + fruit);
}
fruitName()</code></pre>
<p>위 코드를 보면 종류는 오류가 날 것 같지만 undefined가 나오는 것을 볼 수 있습니다.</p>
<pre><code class="language-javascript">  function fruitName(){
    var fruit; //호이스팅
    console.log(&quot;종류: &quot; + fruit); // 종류: undefined 가 나오게 됩니다
    fruit = &quot;포도&quot;; //할당
      console.log(&quot;이름: &quot; + fruit); //이름: 포도
}
fruitName()</code></pre>
<p>위 코드는 자바스크립트엔진에 의해 해석된 코드입니다.
변수 호이스팅에 의해 var fruit는 유효범위인 fruitName함수 내에서 최상단으로 끌어 올려지고, 위에서 선언은 되었지만 할당은 console.log(&quot;종류: &quot; + fruit);밑에서 이루어 지기 때문에 종류: undefined라는 결과가 나오게 됩니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[JavaScript for Ex]]></title>
            <link>https://velog.io/@yj_heo/JavaScript-for-Ex</link>
            <guid>https://velog.io/@yj_heo/JavaScript-for-Ex</guid>
            <pubDate>Fri, 04 Dec 2020 07:08:44 GMT</pubDate>
            <description><![CDATA[<h1 id="javascript-for-ex">JavaScript for Ex</h1>
<p>for문을 공부할 때 다들 한번 쯤 해보셨을 별찍기 예제 입니다.</p>
<pre><code class="language-javascript">
//삼각형 찍기
for(let i = 0; i &lt; 5; i++){
    let str = &quot;&quot;;    
        for(let j = 0; j &lt;= i; j++){
            str  = str + &quot;*&quot;;
        }
        // str += &quot;\n&quot;
    console.log(str)  // *, **, ***, ****, *****  
}

//역삼각형 찍기
for(let i = 5; i &gt;= 1; i--){
    let str = &quot;&quot;;    
        for(let j = 1; j &lt;= i; j++){
            str  = str + &quot;*&quot;;
        }
        // str += &quot;\n&quot;
    console.log(str) // *****, ****, ***, **, *
}</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[javascript operator]]></title>
            <link>https://velog.io/@yj_heo/javascript-operator</link>
            <guid>https://velog.io/@yj_heo/javascript-operator</guid>
            <pubDate>Fri, 04 Dec 2020 04:38:28 GMT</pubDate>
            <description><![CDATA[<h1 id="javascript-operator">javascript operator</h1>
<h2 id="논리-연산자">논리 연산자</h2>
<p><strong>// 논리합(||) 연산자</strong>
true || true   // true
true || false  // true
false || true  // true
false || false // false</p>
<p><strong>// 논리곱(&amp;&amp;) 연산자</strong>
true &amp;&amp; true   // true
true &amp;&amp; false  // false
false &amp;&amp; true  // false
false &amp;&amp; false // false</p>
<p><strong>// 논리 부정(!) 연산자</strong>
!true  // false
!false // true</p>
]]></description>
        </item>
    </channel>
</rss>