<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>yeojin_ni.log</title>
        <link>https://velog.io/</link>
        <description>제로부터 시작하는 개발공부</description>
        <lastBuildDate>Mon, 23 Sep 2024 13:33:39 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>yeojin_ni.log</title>
            <url>https://velog.velcdn.com/images/yeojin_ni/profile/a978247e-c240-4554-8d13-f4b6c941648e/social_profile.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. yeojin_ni.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/yeojin_ni" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[블로그 이전]]></title>
            <link>https://velog.io/@yeojin_ni/%EB%B8%94%EB%A1%9C%EA%B7%B8-%EC%9D%B4%EC%A0%84</link>
            <guid>https://velog.io/@yeojin_ni/%EB%B8%94%EB%A1%9C%EA%B7%B8-%EC%9D%B4%EC%A0%84</guid>
            <pubDate>Mon, 23 Sep 2024 13:33:39 GMT</pubDate>
            <description><![CDATA[<p>tistory로 블로그를 이전해보려합니다 :-D</p>
<p><a href="https://yeojin-ni.tistory.com/">이사한번 갔다오겠습니다</a></p>
<p><em><del>돌아올 수도 있음!</del></em></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[JS - 비동기 데이터 통신]]></title>
            <link>https://velog.io/@yeojin_ni/%EB%B9%84%EB%8F%99%EA%B8%B0%EB%8D%B0%EC%9D%B4%ED%84%B0%ED%86%B5%EC%8B%A0</link>
            <guid>https://velog.io/@yeojin_ni/%EB%B9%84%EB%8F%99%EA%B8%B0%EB%8D%B0%EC%9D%B4%ED%84%B0%ED%86%B5%EC%8B%A0</guid>
            <pubDate>Thu, 19 Sep 2024 08:31:57 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/yeojin_ni/post/5838ddb0-a4e7-49b6-bfe2-8a02877adcb0/image.png" alt=""></p>
<h1 id="httphypertext-transfer-protocal">HTTP(HyperText Transfer Protocal)</h1>
<blockquote>
<p>웹 브라우저와 웹 서버가 데이터를 주고받을 수 있게 디자인된 통신 규약<br>
웹에서 이루어지는 모든 데이터 교환의 기초이며, 이 규약을 암호화하여 보안을 확보한 규약을 HTTPS라 함<br>
데이터를 주고 받는다 -&gt; HTML, 이미지, 영상, 음성 파일 등을 주고 받는다</p>
</blockquote>
<h2 id="http-통신">HTTP 통신</h2>
<blockquote>
<p>HTTP에서는 클라이언트(사용자)가 서버(호스트)에 요청 메시지를 보내고 이에 대해 서버가 응답 메시지 반환<br>
서버는 응답 메시지를 반환한 후에 초기 상태로 돌아감<br>
이러한 특징으로 인해 HTTP를 stateless 규약이라고도 함<img src="https://velog.velcdn.com/images/yeojin_ni/post/41d1bfd2-c704-4f47-8e36-c8a66a47f28b/image.png" alt=""></p>
</blockquote>
<h3 id="생활-속-http-통신">생활 속 HTTP 통신</h3>
<p><img src="https://velog.velcdn.com/images/yeojin_ni/post/0192f721-6c48-44e3-a797-3d64fd44ff6c/image.png" alt=""></p>
<h2 id="http-요청과-응답">HTTP 요청과 응답</h2>
<h3 id="요청">요청</h3>
<blockquote>
<p>HTTP 요청 메시지는 요청 행, 요청 헤더, 메시지 본문으로 구성</p>
</blockquote>
<ul>
<li>요청 행 : 요청 메소드, URL, HTTP 버전 정보 등 포함</li>
<li>요청 헤더 : 메시지 정보, 메세지에 저장한 데이터 정보 등 포함</li>
<li>메시지 본문 : 서버 측으로 보내는 데이터 포함<br>
요청 메소드 - GET, POST 등 데이터 송수신 방식을 지정한 것

</li>
</ul>
<h3 id="응답">응답</h3>
<blockquote>
<p>HTTP 응답 메시지는 응답 행, 응답 헤더, 메시지 본문으로 구성</p>
</blockquote>
<ul>
<li>응답 행 : 상태 코드, 보충 메시지, HTTP 버전 정보 등 포함</li>
<li>응답 헤더 : 메시지 정보, 메세지에 저장한 데이터 정보 등 포함</li>
<li>메시지 본문 : 클라이언트 측으로 보내는 데이터 포함<br>
상태 코드 - 요청이 성공적으로 완료되었는지를 보여주는 숫자 코드

</li>
</ul>
<h2 id="주요-상태-코드">주요 상태 코드</h2>
<blockquote>
<p>요청이 성공적으로 완료되었는지를 보여주는 숫자 코드, 각 숫자마다 의미가 있음</p>
</blockquote>
<table align="center">
  <tr>
    <th>상태 코드</th>
    <th>상태 이름</th>
    <th>내용</th>
  </tr>
  <tr>
    <td>200</td>
    <td>OK</td>
    <td>요청 성공</td>
  </tr>
  <tr>
    <td>401</td>
    <td>unauthorized</td>
    <td>인증 실패</td>
  </tr>
  <tr>
    <td>403</td>
    <td>Forbidden</td>
    <td>액세스 허용 X</td>
  </tr>
  <tr>
    <td>404</td>
    <td>Not Found</td>
    <td>요청 리소스 못 찾음</td>
  </tr>
  <tr>
    <td>500</td>
    <td>Internal Server Error</td>
    <td>서버 내부 오류 발생</td>
  </tr>
  <tr>
    <td>503</td>
    <td>Server Unanailable</td>
    <td>서비스 일시적 사용 불가</td>
  </tr>
</table>

<h2 id="xmlhttprequest">XMLHttpRequest</h2>
<blockquote>
<p>서버와 상호작용하기 위해 사용하는 자바스크립트 빌트인 생성자<br>
이를 이용하면 서버(URL)로부터 데이터를 받아와 전체 페이지의 새로고침 없이도 페이지의 일부만 업데이트하는 비동기 방식의 데이터 통신을 수행할 수 있음<br>
-&gt; 이러한 프로그래밍 기법을 Ajax라 함</p>
</blockquote>
<h3 id="ajax">Ajax</h3>
<blockquote>
<p>Ajax(Asynchronous JavaScript And XML)<br>
웹 서버와 <strong>비동기</strong>로 통신하고 DOM을 이용하여 웹 페이지를 동적으로 갱신하는 프로그래밍 기법
<img src="https://velog.velcdn.com/images/yeojin_ni/post/9b8bcc4f-a0d5-4cfa-b5f9-2d77a9e4103a/image.png" alt=""></p>
</blockquote>
<h3 id="xmlhttprequest-사용흐름">XMLHttpRequest 사용흐름</h3>
<blockquote>
<p>Aja기법에 기초한 XMLHttpRequest 비동기 통신은 세단계를 거침<br></p>
</blockquote>
<ul>
<li>XMLHttpRequest 객체 생성</li>
<li>서버와 통신할 때 필요한 정보 및 처리 방법 등 기입</li>
<li>요청을 전송해 통신 시작<br>
(객체 생성은 new 연산!!!)

</li>
</ul>
<h3 id="이벤트-핸들링">이벤트 핸들링</h3>
<blockquote>
<p>비동기 통신을 할 때 서버와의 통신 상태를 감시할 수 있음
그리고 이때 발생하는 이벤트에 대한 이벤트 핸들러를 등록할 수 있음</p>
</blockquote>
<table align="center">
  <tr>
    <th>이벤트명</th>
    <th>발생하는 시기</th>
  </tr>
  <tr>
    <td>abort</td>
    <td>요청이 취소되었을 때</td>
  </tr>
  <tr>
    <td>error</td>
    <td>요청이 실패했을 때</td>
  </tr>
  <tr>
    <td>load</td>
    <td>요청을 성공하여 응답을 가져올 수 있을 때</td>
  </tr>
  <tr>
    <td>progress</td>
    <td>데이터를 주고받는 중</td>
  </tr>
  <tr>
    <td>timeout</td>
    <td>요청 시간을 초과했을 때</td>
  </tr>
</table>
<br>load를 주로 쓰는 듯 함! (load - 처리 방법에 속함)

<h3 id="요청-초기화-및-전송">요청 초기화 및 전송</h3>
<blockquote>
<p>서버에 요청을 보낼 때 XMLHttpRequest 객체의 open 메소드로 요청을 초기화하고, 이후 send 메소드로 보내주는 순서로 작업 수행</p>
</blockquote>
<pre><code class="language-javascript">// open 메소드 사용시 기본 형태
const request = new XMLHttpRequest()
request.open(&quot;HTTP메소드&quot;, &quot;서버URL&quot;)
// 초기화 했고, 요청 보내자
request.send()</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[JS - Json과 LocalStorage]]></title>
            <link>https://velog.io/@yeojin_ni/JS-Json%EA%B3%BC-LocalStorage</link>
            <guid>https://velog.io/@yeojin_ni/JS-Json%EA%B3%BC-LocalStorage</guid>
            <pubDate>Thu, 12 Sep 2024 06:30:24 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/yeojin_ni/post/6096cd2f-9266-4d2d-9dcd-26a9f206cbc8/image.png" alt=""></p>
<h1 id="객체-리터럴">객체 리터럴</h1>
<blockquote>
<p>객체를 구성하는 속성(값이나 기능)의 이름과 실제 값을 한 쌍으로 묶어 표현하는 &#39;객체 리터럴&#39;을 이용하면 객체 생성 가능<br></p>
</blockquote>
<ul>
<li>속성의 이름 - 키(key)</li>
<li>속성의 값 - 밸류(value)<pre><code>const me = {
  name: &quot;여진&quot;,
  town: &quot;대구&quot;
}</code></pre></li>
</ul>
<blockquote>
<p>속성의 밸류로 함수가 주어지면, 이 속성은 메소드가 됨</p>
</blockquote>
<pre><code>const me = {
    name: &quot;여진&quot;,
    town: &quot;대구&quot;,
    eat: function(){
        console.log(&quot;밥을 먹는다&quot;)
    },
    scratch: function(){
        console.log(&quot;건드리면 죽빵&quot;)
    }
}</code></pre><p>키는 중복될 수 없음, But 값은 같은 것이 있어도 상관X</p>
<h2 id="속성-접근">속성 접근</h2>
<blockquote>
<p>객체 안의 속성 값을 참조할 때(읽기 쓰기) 도트(<code>.</code>)연산자 또는 대괄호(<code>[]</code>)연산자 사용 가능</p>
</blockquote>
<pre><code>// 도트 연산자 사용
console.log(me.town) // 대구
me.scratch() // 건드리면 죽빵</code></pre><pre><code>// 대괄호 연산자 사용
console.log(me[&#39;name&#39;]) // 여진
me[&#39;eat&#39;]() // 밥을 먹는다</code></pre><h2 id="스프레드-연산자">스프레드 연산자</h2>
<blockquote>
<p>스프레드 연산자를 사용하면 객체 리터럴의 요소 목록을 펼칠 수 있음
전개 구문, 전개 연산자 등으로 불림 (펼치다 = spreed) <br>
스프레드 연산자 - <code>...</code><br>
객체 리터럴에 대해 스프레드 연산을 수행하면, 구성요소를 그대로 복사</p>
</blockquote>
<pre><code>const bird = {
    parrot: &#39;앵무새&#39;,
    chicken: &#39;닭&#39;
}
const animal = {
    ...bird,
    dog: &#39;강아지&#39;
}
console.log(animal)</code></pre><p><code>{parrot: &#39;앵무새&#39;, chicken: &#39;닭&#39;, dog: &#39;강아지&#39;}</code></p>
<blockquote>
<p>배열에도 사용가능!</p>
</blockquote>
<pre><code>const pet = [&quot;강아지&quot;, &quot;고양이&quot;]
console.log(...pet)
console.log(pet)</code></pre><p><code>강아지 고양이</code>
<code>[&#39;강아지&#39;, &#39;고양이&#39;]</code>
<br>스프레드 연산자는, 사용된 자리에 개별 요소를 놓고옴</p>
<h1 id="json">Json</h1>
<blockquote>
<p>자바스크립트 객체 표기법 (JavaScript Object Notiation)
자바스크립트 객체를 문자열로 표현하는 데이터 포맷<br>
주로 자바스크립트에서만 사용할 수 있는 객체 타입을, 다른 프로그래밍 언어에서도 사용할 수 있는 형태(문자열)로 변환하기 위해 사용<br>
<code>객체 리터럴</code></p>
</blockquote>
<pre><code>const gokuObject = {
    name: &quot;손오공&quot;,
    race: &quot;사이야인&quot;,
    skills: [
        &quot;에네르기파&quot;,
        &quot;계왕권&quot;,
        &quot;원기옥&quot;,
        &quot;순간이동&quot;
     ]
}</code></pre><p><code>JSON 문자열</code></p>
<pre><code>const gokuObject = `{
    &quot;name&quot;: &quot;손오공&quot;,
    &quot;race&quot;: &quot;사이야인&quot;,
    &quot;skills&quot;: [
        &quot;에네르기파&quot;,
        &quot;계왕권&quot;,
        &quot;원기옥&quot;,
        &quot;순간이동&quot;
     ]
}`</code></pre><h2 id="내장객체">내장객체</h2>
<table align="center">
  <tr>
    <th>메소드명</th>
    <th>기능</th>
    <th>특이사항</th>
  </tr>
  <tr>
    <td>stringify</td>
    <td>객체 to JSON</td>
    <td>undefined, 함수 등은 생략되거나 null로 변환</td>
  </tr>
  <tr>
    <td>parse</td>
    <td>JSON to 객체</td>
    <td>작은 따옴표, 후행 쉼표는 파싱 불가하기도</td>
  </tr>
</table>

<h1 id="localstorage">LocalStorage</h1>
<blockquote>
<p>현재 도메인의 로컬 저장소에 접근할 수 있게 해줌<br>
로컬 저장소는 웹브라우저에서 각 도메인에 대해 할당해주는 저장 공간으로, 데이터를 영구적으로 보관할 수 있음<br>
데이터 보관 시에는 데이터의 이름과 데이터의 실제 값을 각각 지정하며, 이때 데이터 타입은 문자열 형태만 허용됨<br></p>
</blockquote>
<h2 id="영구적으로-보관한다">영구적으로 보관한다?</h2>
<blockquote>
<p>브라우저를 껐다가 켜거나 페이지를 새로고침해도 해당 도메인에 데이터가 남아있도록 할 수 있음!</p>
</blockquote>
<h2 id="로컬-저장소-조회">로컬 저장소 조회</h2>
<blockquote>
<p>개발자 도구의 Application 탭에서 조회 가능
<img src="https://velog.velcdn.com/images/yeojin_ni/post/1e158c75-5f6b-43bb-96fe-34fed707b306/image.png" alt=""></p>
</blockquote>
<h2 id="localstorage-메서드">localStorage 메서드</h2>
<blockquote>
<p>로컬스토리지의 데이터 이름은 중복 될 수 없음!!</p>
</blockquote>
<table align="center">
  <tr>
    <th>메소드명</th>
    <th>기능</th>
    <th>사용 예</th>
  </tr>
  <tr>
    <td>setItem</td>
    <td>키와 밸류를 전달받아 저장</td>
    <td>setItem("key","value")</td>
  </tr>
  <tr>
    <td>getItem</td>
    <td>전달받은 키에 해당하는 밸류를 반환</td>
    <td>getItem("key")</td>
  </tr>
  <tr>
    <td>removeItem</td>
    <td>전달받은 키에 해당하는 데이터 삭제</td>
    <td>removeItem("key")</td>
  </tr>
  <tr>
    <td>clear</td>
    <td>모든 데이터 삭제</td>
    <td>clear()</td>
  </tr>
</table>

]]></description>
        </item>
        <item>
            <title><![CDATA[JS - Var, Let, Const 차이]]></title>
            <link>https://velog.io/@yeojin_ni/Var-Let-Const-%EC%B0%A8%EC%9D%B4</link>
            <guid>https://velog.io/@yeojin_ni/Var-Let-Const-%EC%B0%A8%EC%9D%B4</guid>
            <pubDate>Tue, 10 Sep 2024 02:18:53 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/yeojin_ni/post/017cb83d-23c0-409b-a616-86f4d02fae5a/image.png" alt=""></p>
<h1 id="차이점">차이점</h1>
<p><strong><code>var</code></strong>는 함수 범위를 가지며, 호이스팅의 특성 때문에 혼란을 줄 수 있다
중복선언과 재할당 모두 가능하다</p>
<p><strong><code>let</code></strong>과 <strong><code>const</code></strong>는 블록 범위의 특징을 갖는다
특정 블록(if, for) 내에서 선언된 변수가 해당 블록 밖에서 접근 불가능하다는 것을 의미
<strong><code>let</code></strong>은 중복선언은 불가능하다 재할당은 가능하다 </p>
<p><strong><code>const</code></strong>는 let과 var와 달리 한번 값을 할당하면 그 값을 변경할 수 없다</p>
<p><strong>let</strong>과 <strong>const</strong>를 사용함으로써, 변수의 재할당과 재선언에 관련된 일반적인 문제점들을 피할 수 있는데 이로 인해 코드의 버그 발생 확률이 줄어들고, 코드의 안정성이 향상된다</p>
<p>현재 개발에서는 var의 한계와 문제점들을 피하기 위해 let과 const를 주로 사용하며, 
<strong>변수의 재할당이 필요하지 않은 경우 <code>const</code></strong>, 
<strong>필요한 경우에는 <code>let</code></strong>을 사용하는 것이 권장된다</p>
<h1 id="var">Var</h1>
<blockquote>
<p>ES6 등장 이전에 사용되던 키워드<br>
중복선언, 재할당 모두 가능<br>
스코프 - 함수레벨 스코프(Function-level)<br>
호이스팅 - 호이스팅 시 undefined로 변수 초기화<br>
전역객체 프로퍼티 - 할당</p>
</blockquote>
<h2 id="why-var-사용-지양">WHY? var 사용 지양</h2>
<h3 id="문제점">문제점</h3>
<blockquote>
<p><strong><code>변수의 중복 선언 가능</code></strong><br>
이미 선언했던 변수명을 모르고 또 사용할 경우, 기존에 있던 변수는 전혀 다른 값을 가지게 됨
그 경우, 그 변수를 사용하는 다양한 로직들에 치명적인 문제가 생김<br></p>
</blockquote>
<blockquote>
<p><strong><code>for문에서의 문제점</code></strong><br>
var는 function-scoped이기 때문에, for문에서 순회를 위해 i라는 변수를 var로 선언한 경우, 이 변수는 for문이 <strong>종료되어도 접근이 가능</strong>하게 됨<br>
만약 for문의 함수 내부가 아닌, 함수 외부에 전역적으로 돌아갈 경우 for문에서 사용한 var변수들은 <strong>전역 변수로서 역할</strong>을 하므로, 전역 변수가 남발될 수 있다</p>
</blockquote>
<h3 id="호이스팅">호이스팅</h3>
<blockquote>
<p>var키워드를 사용해 변수 선언 시, 해당 변수의 선언부를 <strong>최상단</strong>으로 올리는 것
JavaScript의 변수 생성과 초기화의 작업이 분리되어 진행되기 때문에 이런 현상 발생<br>
var는 기존 c나 java의 Block-scoped가 아니라 Function-scoped
따라서 코드 전체의 최상단이 아닌 함수 내부의 최상단으로 이동함<br>
<em>( function-scoped는 중괄호로 구분된 영역의 범위를 갖는 것이 아닌 함수 내부의 영역을 범위로 갖는 것을 의미 )</em></p>
</blockquote>
<h1 id="let">Let</h1>
<blockquote>
<p>재할당 가능, 중복선언 불가능<br>
스코프 - 블록레벨 스코프(Block-level)<br>
호이스팅 - 선언 단계 - TDZ - 초기화 단계 - 할당 단계로 분리되어 진행<br>
전역객체 프로퍼티 - undefined</p>
</blockquote>
<h1 id="const">Const</h1>
<blockquote>
<p>중복선언, 재할당 불가능<br>
스코프 - 블록레벨 스코프(Block-level)<br>
호이스팅 - 초기화 이전 접근시 ReferenceError발생
전역객체 프로퍼티 - undefined</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[JavaScript 이벤트 핸들링]]></title>
            <link>https://velog.io/@yeojin_ni/JavaScript-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%ED%95%B8%EB%93%A4%EB%A7%81</link>
            <guid>https://velog.io/@yeojin_ni/JavaScript-%EC%9D%B4%EB%B2%A4%ED%8A%B8-%ED%95%B8%EB%93%A4%EB%A7%81</guid>
            <pubDate>Mon, 09 Sep 2024 07:50:39 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/yeojin_ni/post/911efc34-fe03-42d5-8113-37675c4e364f/image.png" alt=""></p>
<h1 id="이벤트event란">이벤트(event)란</h1>
<blockquote>
<p>DOM에서 발생하는 다양한 액션 또는 상호작용 동작을 나타내는 프로그래밍 인터페이스</p>
</blockquote>
<h4 id="예시">예시</h4>
<ul>
<li>웹페이지 사용자가 버튼 클릭 -&gt; 클릭 이벤트</li>
<li>웹페이지 사용자가 키보드 클릭 -&gt; 키다운 이벤트</li>
<li>웹페이지 사용자가 입력 폼 내용 제출 -&gt; 제출 이벤트</li>
<li>외 다수</li>
</ul>
<h2 id="이벤트가-발생했을-때">이벤트가 발생했을 때?!</h2>
<blockquote>
<p>각각의 이벤트에 대한 이벤트 핸들러 정의 가능 <br>
이벤트 핸들러 - 이벤트가 발생되면 실행될 코드 블록, 주로 함수가 이 역할 담당
이벤트 핸들러 등록 - 이벤트 핸들러 역할을 수행할 함수를 정의하는 것</p>
</blockquote>
<h2 id="구문-기본-형태">구문 기본 형태</h2>
<blockquote>
<p>이벤트를 처리할 타켓 선택 후 이벤트 핸들러 속성에 이벤트 핸들러 대입
[주의] - 이벤트 핸들러를 등록하기 위해 이벤트 속성에 함수를 대입하는 것과 함수 호출문을 대입하는 것은 다름<br>
<code>타켓.on이벤트명 = 이벤트핸들러 함수</code> 
-&gt; <code>button.onclick = handleClick</code></p>
</blockquote>
<h2 id="addeventlistener">addEventListener()</h2>
<blockquote>
<p>onclick, onkeydown과 같은 이벤트 속성을 통해 이벤트 핸들러를 등록하는 것보다 편하고 유용한 이벤트 처리방법<br>
장점</p>
</blockquote>
<ul>
<li>이전에 추가한 이벤트 핸들러를 제거할 수 있는 대응 메소드 존재</li>
<li>같은 리스터(타겟)에 대해 다수의 핸들러를 등록할 수 있음<br>
<code>addEventListener(이벤트명, 이벤트핸들러)</code></li>
</ul>
<h2 id="이벤트-객체">이벤트 객체</h2>
<blockquote>
<p>추가적인 기능과 정보를 제공하기 위해 이벤트 핸들러에 자동으로 전달되는 데이터<br>
이벤트 핸들러 함수에 매개변수를 추가하여 이벤트 발생 시마다 전달받을 수 있게 해야함</p>
</blockquote>
<pre><code>// click 이벤트가 발생하면 함수 호출하겠다
target.addEventListener(&#39;click&#39;,function(){})</code></pre><pre><code>// click 이벤트가 발생하면 함수를 호출하겠다
// + 이때 자동으로 전달되는 이벤트 객체를 매개변수 event에 대입하겠다
target.addEvenListener(&#39;click&#39;, function(event){})</code></pre><h1 id="value">value</h1>
<blockquote>
<p>input, select처럼 사용자로부터 입력을 받는데 사용되는 요소들이 있는데, 여기서 사용자가 입력한 값을 읽을때 value속성에 접근</p>
</blockquote>
<h2 id="textcontent와-value-차이">textContent와 value 차이</h2>
<ul>
<li>textContent - 요소에 쓰여져 있는 텍스트에 접근</li>
<li>value - 사용자가 직접 요소에 입력한 값에 접근</li>
</ul>
<h2 id="value-접근">value 접근</h2>
<blockquote>
<p>입력 요소의 value에 접근하여 할 수 있는 일은 크게 두가지, 읽기와 쓰기</p>
</blockquote>
<pre><code>// 대상 요소의 사용자 입력값을 읽어 콘솔 출력
console.log(target.value)</code></pre><pre><code>// 대상 요소의 사용자 입력값을 &quot;변경값&quot;으로
target.value = &quot;변경값&quot;</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[자바스크립트 기초]]></title>
            <link>https://velog.io/@yeojin_ni/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EA%B8%B0%EC%B4%88</link>
            <guid>https://velog.io/@yeojin_ni/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EA%B8%B0%EC%B4%88</guid>
            <pubDate>Thu, 05 Sep 2024 02:23:07 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/yeojin_ni/post/dd62749f-a039-4fb8-b0fa-d23cdd0ea4dd/image.png" alt=""></p>
<h1 id="자바스크립트">자바스크립트</h1>
<blockquote>
<p>HTML - 마크업 언어, CSS - 스타일시트 언어<br>
자바스크립트 - 프로그래밍 언어<br>
자바스크립트는 서버 개발, 어플리케이션 개발 등 다양한 목적을 위해 사용할 수 있는 언어지만, 주된 활동 분야는 &#39;웹 개발&#39;<br>
웹 개발 - 인터넷을 통해 서비스되는 웹사이트를 개발 하는 일</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/yeojin_ni/post/f42444f8-5ba9-4642-a899-7d2ce5842d9c/image.png" alt=""></p>
<h2 id="자바스크립트의-역할">자바스크립트의 역할</h2>
<blockquote>
</blockquote>
<ul>
<li>웹브라우저 및 하위 객체가 가진 기능을 구동</li>
<li>HTML/CSS를 통해 렌더링된 화면을 조작할 수 있음<br>
역할을 정상적으로 수행하기 위해서는, 자바스크립트 코드를 올바른 위치에 작성하는 것이 중요</li>
</ul>
<h2 id="자바스크립트-작성-위치">자바스크립트 작성 위치</h2>
<blockquote>
</blockquote>
<ul>
<li>HTML문서 내부에 작성, &lt; script &gt; 태그사용</li>
<li>자바스크립트 파일을 만들고, 그 안에 작성한 코드를 HTML 문서에 연결</li>
</ul>
<hr>

<h2 id="스크립트-동작-원리">스크립트 동작 원리</h2>
<blockquote>
<p>자바스크립트는 프로그래밍 언어로써, 소프트웨어적 대상에게 명령을 내리는 역할을 수행<br>
소프트웨어적 대상이란, 웹브라우저, 웹 요소, 웹 스타일 등을 의미<br>
명령을 내리고싶은 대상에 자바스크립트 명령을 전달하면, 다음 절차대로 작업이 이루어짐</p>
</blockquote>
<ul>
<li>입력 -&gt; 처리 -&gt; 출력<br>
자바스크립트 명령문으로 어떤 처리를 지시하고자 하는 대상을 가리켜 <strong>&#39;객체&#39;</strong>라 함</li>
</ul>
<h3 id="입력-처리-출력">입력, 처리, 출력</h3>
<blockquote>
</blockquote>
<ul>
<li>입력 - 객체에게 어떤 작업을 수행하라는 명령 전달</li>
<li>처리 - 객체가 주어진 작업을 수행</li>
<li>출력 - 객체가 작업을 수행한 결과를 사용자에게 반환</li>
</ul>
<h2 id="객체-다루는-방법">객체 다루는 방법</h2>
<blockquote>
<p>자바스크립트가 제공하는 객체 이름을 선택하고, 뒤에 점(.)을 붙인 다음 전달하고자 하는 명력을 적어줌<br>
그러면 입력, 처리, 출력의 절차 시작</p>
</blockquote>
<h3 id="객체-명령의-두가지-유형">객체 명령의 두가지 유형</h3>
<blockquote>
<p><code>객체.데이터</code></p>
</blockquote>
<ul>
<li>객체가 가지고 있는 숫자, 문자 등의 다양한 데이터 사용 가능</li>
<li>객체가 가지고 있는 데이터(정보)를 가리켜 일반적으로 <strong>&#39;속성&#39;</strong>이라 함<br>
<code>객체.기능()</code></li>
<li>객체가 가지고 있는 다양한 기능을 수행할 수 있음(괄호 필수)</li>
<li>객체가 가지고 있는 기능을 가리켜 일반적으로 <strong>&#39;메소드&#39;</strong>라 함</li>
</ul>
<h3 id="예시">예시</h3>
<p><code>window.alert(&#39;warn&#39;)</code>
웹브라우저에게 &#39;경고창에 <strong>&#39;warn&#39;</strong>이라고 쓴 다음 화면에 띄워줘&#39;라는 명령 전달</p>
<h2 id="콘솔-console">콘솔 (console)</h2>
<blockquote>
<p>브라우저의 디버깅 콘솔<br>
콘솔은 브라우저 안에 내장된 브라우저의 하위 객체이므로 브라우저 객체를 통해 접근할 수 있음<br>
<code>window.console</code> 과 <code>console</code> 같음
-&gt; window 생략가능</p>
</blockquote>
<hr>

<h2 id="변수">변수</h2>
<blockquote>
<p>&#39;데이터에 붙이는 이름표&#39;<br>
변수를 이용하면 이름표를 붙여 둔 데이터를 기억해뒀다 필요할 때마다 재사용할 수 있게 됨<br>
<code>let 변수이름 = 데이터;</code> // 변수 선언
<code>변수이름 = 데이터</code> // 변수 초기화 <br>
데이터를 기억하기 위해 변수 사용<br>
변수는 한 번에 하나의 데이터만 기억할 수 있으며, 기억하고 있는 값을 바꿔가며 사용가능</p>
</blockquote>
<h3 id="변수-제약사항">변수 제약사항</h3>
<blockquote>
</blockquote>
<ul>
<li>오직 문자와 숫자, 그리고 기호$과 _만 포함될 수 있음</li>
<li>첫 번째 글자로 숫가 올 수 없음</li>
<li>다른 뜻을 가지고 있는 단어(키워드)는 변수명으로 사용할 수 없음</li>
</ul>
<h2 id="상수">상수</h2>
<blockquote>
<p>수식에서 &#39;변하지 않는 값&#39;을 뜻함<br>
변수와 반대되는 것, 상수는 &#39;단 하나의 데이터만을 위해 사용하는 이름표&#39;로써, 값의 변경이 불가능<br>
<code>const 상수이름 =데이터;</code> <br>
상수도 변수처럼 지정된 데이터 대신 사용 가능
상수 이름 짓기 규칙은 변수 이름 짓기와 동일<br>
선언과 동시에 초기화 해줘야함
<code>const 상수이름;</code>
<code>상수이름 = 데이터;</code> // 에러!!!<br>
상수는 자신이 선언될 때 지정된 데이터로 고정
선언 이후 데이터를 대입하려고 하면 에러 발생</p>
</blockquote>
<h2 id="템플릿-리터럴">템플릿 리터럴</h2>
<blockquote>
<p>문자열을 표현하는 또 다른 방법, 따옴표를 이용해 표현하는 방법에 비해 조금 늦게 추가된 문법<br>
<code>백틱</code>을 이용해 표현 ``</p>
</blockquote>
<p><code>const str1 = &#39;작은 따옴표&#39;</code>
<code>const str2 = &quot;큰 따옴표&quot;</code>
const str3 = ``</p>
<h3 id="표현식-삽입-방법">표현식 삽입 방법</h3>
<blockquote>
<p>템플릿 리터럴은 반환값이 존재하는 자바스크립트 코드,
표현식을 내장할 수 있는 문자열 표현법<br>
문자열 내용에 데이터를 삽입한다는 것을 의미<br>
템플릿 리터럴로 표현한 문자열 내부에 플레이스 홀더 <code>${}</code>를 기입하고, 그 안에 데이터를 기입하면 데이터는 문자열의 멤버가 됨</p>
</blockquote>
<p>입력문</p>
<pre><code>const data = &quot;데이터&quot;
const str = `문자열 중간에 ${data} 삽입하기`
console.log(str)</code></pre><p>출력문 - <code>문자열 중간에 데이터 삽입하기</code></p>
<hr>

<h2 id="undefined--null">undefined &amp; null</h2>
<blockquote>
</blockquote>
<ul>
<li>undefined - 아직 데이터가 정의되지 않음</li>
<li>null - 의도적으로 데이터가 없음</li>
</ul>
<h2 id="기본-자료형-boolean">기본 자료형 boolean</h2>
<blockquote>
<p><strong>true</strong> 와 <strong>false</strong> 두가지 값만 존재<br>
참과 거짓 여부를 나타내기 위해 사용하는 데이터<br>
소문자로 작성해야함</p>
</blockquote>
<hr>

<h2 id="dom-관련-메소드">DOM 관련 메소드</h2>
<blockquote>
<p>DOM을 다루는 명령문도 입력-처리-출력 절차 수행</p>
</blockquote>
<table align="center">
  <tr>
    <th>메소드 이름</th>
    <th>역할</th>
  </tr>
  <tr>
    <td>document.querySelector()</td>
    <td>CSS선택자 ()를 기반으로 첫 번째 요소 선택</td>
  </tr>
  <tr>
    <td>document.querySelectorAll()</td>
    <td>CSS선택자 ()를 기반으로 여러 요소 선택</td>
  </tr>
  <tr>
    <td>document.getElementById()</td>
    <td>id속성 값을 기반으로 요소 선택</td>
  </tr>
  <tr>
    <td>document.getElementClassName()</td>
    <td>class속성의 값을 기반으로 여러 요소 선택</td>
  </tr>
  <tr>
    <td>document.write()</td>
    <td>문서에 콘텐츠 ()를 추가 입력</td>
  </tr>
</table>

<p><br><br></p>
<table align="center">
  <tr>
    <th>메소드 이름</th>
    <th>역할</th>
  </tr>
  <tr>
    <td>Element.textContent</td>
    <td>요소가 가진 텍스트 콘텐츠 반환</td>
  </tr>
  <tr>
    <td>Element.innerHTML</td>
    <td>요소 내에 쓰여진 HTML 코드를 텍스트 형태로 반환</td>
  </tr>
  <tr>
    <td>Element.className</td>
    <td>요소의 class 속성값 반환</td>
  </tr>
  <tr>
    <td>Element.style</td>
    <td>요소의 style 관련 속성값들을 반환</td>
  </tr>
  <tr>
    <td>Element.title</td>
    <td>요소의 title 속성값 반환</td>
  </tr>
</table>

<hr>

<h2 id="createelement--appendchild">createElement &amp; appendChild</h2>
<h3 id="documentcreateelement">document.createElement</h3>
<blockquote>
<p>지정된 이름의 HTML 요소를 만들어 반환
<code>document.creatElement(&#39;div&#39;)</code>
<code>document.creatElement(&#39;p&#39;)</code>
<code>document.creatElement(&#39;a&#39;)</code> <br>
HTML 요소가 만들어지고 반환 되었다고 해서 해당 요소가 바로 웹 브라우저 화면에 추가되는 것은 아님 <br>
자바스크립트 단계에서 만들어져 있는 요소를 화면에 표시하는 작업을 추가로 해야함</p>
</blockquote>
<h3 id="요소를-추가할-때-append--appendchild">요소를 추가할 때 append() / appendChild()</h3>
<h4 id="appendchild">appendChild()</h4>
<blockquote>
<p><code>appendChild</code> 메소드 - DOM 내 개별요소 (&#39;노드&#39;)에 자식 요소를 추가할 때 사용하는 메소드<br>
기본 사용 법
<code>target.appendChild(자식으로 추가할 요소)</code><br>
예시</p>
</blockquote>
<pre><code>const p = document.createElement(&#39;p&#39;)
document.body.appendChild(p)</code></pre><h4 id="append">append()</h4>
<blockquote>
<p>타켓 요소에 자식 요소를 추가한다는 점에서 appendChild()와 같으나 차이점 존재<br></p>
</blockquote>
<h4 id="차이점">차이점</h4>
<ul>
<li>append를 이용하면 요소에 노드 객체 또는 문자열을 자식 요소로 추가할 수 있지만, appendChild는 노드 객체만 추가 가능</li>
<li>appendChild의 경우 추가한 자식 노드를 반환하지만, append는 반환 데이터가 없음</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[동기 (Synchronous)와 비동기(Asynchronous)]]></title>
            <link>https://velog.io/@yeojin_ni/%EB%8F%99%EA%B8%B0-Synchronous%EC%99%80-%EB%B9%84%EB%8F%99%EA%B8%B0Asynchronous</link>
            <guid>https://velog.io/@yeojin_ni/%EB%8F%99%EA%B8%B0-Synchronous%EC%99%80-%EB%B9%84%EB%8F%99%EA%B8%B0Asynchronous</guid>
            <pubDate>Wed, 04 Sep 2024 04:13:19 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/yeojin_ni/post/44e6bfed-bf67-4308-917b-a2e2a8817d1e/image.png" alt=""></p>
<h1 id="동기-synchronous">동기 (Synchronous)</h1>
<blockquote>
<p>요청을 하고 응답을 받을 때까지 기다림<br>
응답이 오면 다음 동작 수행</p>
</blockquote>
<h2 id="장점">장점</h2>
<ul>
<li>로직이 간단하고 이해하기 쉽다</li>
</ul>
<h2 id="단점">단점</h2>
<ul>
<li>응답을 기다리는 동안 아무것도 못하므로 리소스가 낭비될 수 있다</li>
</ul>
<hr>

<h1 id="비동기asynchronous">비동기(Asynchronous)</h1>
<blockquote>
<p>요청을 하고 응답으 기다리지 않고 바로 다음 동작 수행<br>
응답이 오면 이후 처리</p>
</blockquote>
<h2 id="장점-1">장점</h2>
<ul>
<li>응답을 기다리는 동안 다른 작업을 수행할 수 있으므로 효율적이다</li>
</ul>
<h2 id="단점-1">단점</h2>
<ul>
<li>로직이 복잡해질 수 있고, 동시성 제어가 필요할 수 있다</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[CSS  flex]]></title>
            <link>https://velog.io/@yeojin_ni/CSS</link>
            <guid>https://velog.io/@yeojin_ni/CSS</guid>
            <pubDate>Wed, 04 Sep 2024 03:57:58 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/yeojin_ni/post/eeff1583-87b3-4462-93db-24319d4c2af1/image.png" alt=""></p>
<h1 id="css-레이아웃">CSS 레이아웃</h1>
<blockquote>
<p>레이아웃(layout) - 구성 요소를 공간에 효과적으로 배열하는 일, 또는 그 기술<br>
CSS 레이아웃은 웹 요소를 올바른 장소에 배치하는 기술<br>
CSS 레이아웃 기술은 형제 요소들을 가지런히 정렬할 수 있게 해주며, 요소가 컨테이너 내부에서 어떤 위치에 놓이게 될지 결정할 수 있음</p>
</blockquote>
<h2 id="대표적인-css-레이아웃-기술">대표적인 CSS 레이아웃 기술</h2>
<ul>
  <li>일반적인 문서 흐름</li>
  <li>display 속성</li>
  <li>플렉스 박스</li>
  <li>그리드 레이아웃</li>
  <li>float 속성</li>
  <li>position 속성</li>
  <li>기타 등등</li>
</ul>

<h2 id="플렉스-박스-flex-box">플렉스 박스 (flex box)</h2>
<blockquote>
<p>행 또는 열을 주축으로 설정하여 웹 요소를 배치 및 정렬하는 1차원 레이아웃 방식<br>
플렉스박스 방식에서, 요소의 배치와 정렬은 플렉스 컨테이너와 플렉스 아이템 간의 상호작용을 통해 결정 <br></p>
</blockquote>
<ul>
  <li>플렉스 컨테이너 - 플렉스 박스 방식으로 레이아웃을 결정할 요소</li>
  <li>플렉스 아이템 - 플렉스 컨테이너 내부에서 플렉스박스 방식으로 배치되는 요소</li>
</ul><br>

<blockquote>
<p><code>display:flex;</code> - 플렉스박스 방식을 사용하기 위해 플렉스 컨테이너 생성<br>
<code>display:inline-flex;</code> - 플렉스 컨테이너가 인라인 레벨 요소</p>
</blockquote>
<h3 id="중요-개념">중요 개념</h3>
<blockquote>
<p>플렉스박스 방식은 두 개의 축을 기반으로 동작<br>
그 중 하나의 축을 주축삼아 요소를 배치하는데, 주축의 기본값은 가로 방향(왼 -&gt; 오)</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/yeojin_ni/post/9574b8e9-a845-4eda-9c96-32c921fbf529/image.png" alt=""></p>
<h3 id="flexbox-관련-속성">flexbox 관련 속성</h3>
<ul>
  <li>flex-direction</li>
  <li>flex-wrap</li>
  <li>justify-content</li>
  <li>align-items</li>
  <li>align-self</li>
  <li>align-content</li>
  <li>flex-grow</li>
  <li>flex-shrink</li>
  <li>flex-basis</li>
  <li>flex</li>
  <li>order</li>
</ul>

<h3 id="flex-direction">flex-direction</h3>
<blockquote>
<p>플렉스 컨테이너의 주축을 결정하는 속성<br>
행 - 가로
열 - 세로</p>
</blockquote>
<table>
  <tr>
    <th>속성값</th>
    <th>의미</th>
  </tr>
  <tr>
    <td>row</td>
    <td>기본값, 주축- 행, 방향 - 콘텐츠 방향과 동일</td>
  </tr>
  <tr>
    <td>row-reverse</td>
    <td>주축 - 행, 방향 - 콘텐츠 방향과 반대</td>
  </tr>
  <tr>
    <td>column</td>
    <td>주축 - 열, 방향 - 콘텐츠 방향과 동일</td>
  </tr>
  <tr>
    <td>column-reverse</td>
    <td>주축 - 열, 방향 - 콘텐츠 방향과 반대</td>
  </tr>
</table>

<h3 id="flex-wrap">flex-wrap</h3>
<blockquote>
<p>플렉스 아이템들이 강제로 한줄에 배치되게 할 것인지, 또는 가능한 영역 내에서 벗어나지 않고 여러행으로 나누어 표현할 것인지 결정하는 속성</p>
</blockquote>
<table>
  <tr>
    <th>속성값</th>
    <th>의미</th>
  </tr>
  <tr>
    <td>nowrap</td>
    <td>기본값, 공간이 부족하더라도 요소를 한줄에 배치</td>
  </tr>
  <tr>
    <td>wrap</td>
    <td>공간 크기에 따라 요소가 여러 행에 걸쳐 배치</td>
  </tr>
  <tr>
    <td>wrap-reverse</td>
    <td>wrap과 동일하나 요소 나열되는 시작점과 끝점이 반대</td>
  </tr>
</table>

<h3 id="justify-content">justify-content</h3>
<blockquote>
<p>플렉스 아이템들이 플렉스 박스 주축을 따라 배치될 때, 요소 사이의 공간을 분배하는 방식 결정</p>
</blockquote>
<table>
  <tr>
    <th>속성값</th>
    <th>의미</th>
  </tr>
  <tr>
    <td>flex-start</td>
    <td>주축의 시작점으로부터 끝점을 향해 배치</td>
  </tr>
  <tr>
    <td>flex-end</td>
    <td>주축의 끝점으로부터 시작점을 향해 배치</td>
  </tr>
  <tr>
    <td>center</td>
    <td>주축의 중심부에 배치</td>
  </tr>
  <tr>
    <td>space-between</td>
    <td>주축에서 일정한 간격을 둔 채 양끝 정렬 배치</td>
  </tr>
  <tr>
    <td>space-around</td>
    <td>모든 요소가 동일한 여백을 갖도록 배치</td>
  </tr>
  <tr>
    <td>space-evenly</td>
    <td>모든 요소 사이의 간격을 동일하게 유지 배치</td>
  </tr>
</table>

<h3 id="align-items">align-items</h3>
<blockquote>
<p>플렉스 컨테이너의 교차축 위에서 플렉스 아이템들이 어떤 식으로 정렬될 것인지 결정</p>
</blockquote>
<table>
  <tr>
    <th>속성값</th>
    <th>의미</th>
  </tr>
  <tr>
    <td>stretch</td>
    <td>플렉스 아이템이 교차축 길이에 맞춰 늘어남, 너비 or 높이가 우선</td>
  </tr>
  <tr>
    <td>flex-start</td>
    <td>교차축의 시작점으로부터 끝점을 향해 배치</td>
  </tr>
  <tr>
    <td>flex-end</td>
    <td>교차축의 끝점으로부터 시작점을 향해 배치</td>
  </tr>
  <tr>
    <td>center</td>
    <td>교차축의 중심부에 배치</td>
  </tr>
</table>

<h3 id="align-self">align-self</h3>
<blockquote>
<p>각각의 플렉스 아이템이 교차축에서 어떤 식으로 정렬될 것인지 스스로 결정</p>
</blockquote>
<table>
  <tr>
    <th>속성값</th>
    <th>의미</th>
  </tr>
  <tr>
    <td>stretch</td>
    <td>플렉스 아이템이 교차축 길이에 맞춰 늘어남, 너비 or 높이가 우선</td>
  </tr>
  <tr>
    <td>flex-start</td>
    <td>교차축의 시작점으로부터 끝점을 향해 배치</td>
  </tr>
  <tr>
    <td>flex-end</td>
    <td>교차축의 끝점으로부터 시작점을 향해 배치</td>
  </tr>
  <tr>
    <td>center</td>
    <td>교차축의 중심부에 배치</td>
  </tr>
</table>

<h3 id="align-content">align-content</h3>
<blockquote>
<p>교차축 위에서 justify-content와 동일하게 사용할 수 있는 속성<br>
다음 두 조건이 만족되면서 여유 공간이 있을 때만 동작할 수 있음</p>
</blockquote>
<ul>
  <li>flex-wrap의 값이 wrap으로 지정되어 있을 때</li>
  <li>아이템을 배치하기 위해 필요한 공간보다 플렉스 컨테이너가 더 클 때</li>
</ul>

<h3 id="flex-grow--flex-shrink--flex-basis">flex-grow &amp; flex-shrink &amp; flex-basis</h3>
<blockquote>
<ul>
  <li>flex-grow - 플렉스 아이템이 기본 크기보다 더 커질 수 있는지를 결정하고, 플렉스 컨테이너 내부에서 할당받을 수 있는 공간을 상대적으로 정의할 수 있는 속성</li><br>
  <li>flex-shrink - 플렉스아이템이 기본 크기보다 더 작아질 수 있는지를 결정하고, 플렉스 컨테이너 내부에서 할당받을 수 있는 공간을 상대적으로 정의할 수 있는 속성</li><br>
  <li>flex-basis - 플렉스 아이템의 초기 크기를 지정하는 속성</li>
</blockquote>
</ul>

<h3 id="order">order</h3>
<blockquote>
<p>플렉스 아이템의 배치 순서를 설정할 수 있으며, 지정한 숫자에 맞춰 오름차순으로 배치가 진행<br>
코드에 영향을 끼치는 것이 아닌, 보여지는 순서에만 영향을 줌</p>
</blockquote>
<table>
  <tr>
    <th>속성값</th>
    <th>의미</th>
  </tr>
  <tr>
    <td>정수</td>
    <td>같은 값이면 코드 상의 순서대로</td>
  </tr>
</table>
]]></description>
        </item>
        <item>
            <title><![CDATA[브라우저가 웹 페이지를 렌더링 하는 과정]]></title>
            <link>https://velog.io/@yeojin_ni/%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80%EA%B0%80-%EC%9B%B9-%ED%8E%98%EC%9D%B4%EC%A7%80%EB%A5%BC-%EB%A0%8C%EB%8D%94%EB%A7%81-%ED%95%98%EB%8A%94-%EA%B3%BC%EC%A0%95</link>
            <guid>https://velog.io/@yeojin_ni/%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80%EA%B0%80-%EC%9B%B9-%ED%8E%98%EC%9D%B4%EC%A7%80%EB%A5%BC-%EB%A0%8C%EB%8D%94%EB%A7%81-%ED%95%98%EB%8A%94-%EA%B3%BC%EC%A0%95</guid>
            <pubDate>Tue, 03 Sep 2024 10:23:01 GMT</pubDate>
            <description><![CDATA[<h1 id="웹-페이지-렌더링">웹 페이지 렌더링</h1>
<p><img src="https://velog.velcdn.com/images/yeojin_ni/post/4aac7551-b3b5-412a-b49a-0086329d52da/image.jpeg" alt=""></p>
<h2 id="1-바이트-파싱">1. 바이트 파싱</h2>
<blockquote>
<p>웹 서버에서 웹 페이지 관련 파일들 (HTML, CSS, JavaScript 등)을 받아옴 <br>
받아온 바이트들은 사람이 읽을 수 있는 문자로 바꿈</p>
</blockquote>
<h2 id="2-html파싱과-dom트리-생성">2. HTML파싱과 DOM트리 생성</h2>
<blockquote>
<p>문자로 바뀐 HTML 문서를 위에서 하래로 읽으면서 해석<br>
여기서 HTML태그들을(div, a, p 태그 등) 기반으로 <strong>&#39;노드&#39;</strong> 를 만듬<br>
이러한 노드들을 연결해서 DOM트리 생성</p>
</blockquote>
<h2 id="3-css-파싱과-cssom-트리-생성">3. CSS 파싱과 CSSOM 트리 생성</h2>
<blockquote>
<p>외부 CSS파일이나 내장된 스타일을 파싱하여 CSSOM(CSS Object Model) 트리를 만듬</p>
</blockquote>
<h2 id="4-javascript-실행">4. JavaScript 실행</h2>
<blockquote>
<p>파서는 &lt; script&gt; 태그를 만나면 파싱을 일시 중단하고 (<strong>파서 차단</strong>) 해당 JavaScript를 실행<br>
JavaScript코드는 DOM이나 CSSOM을 수정할 수 있으므로, 이 단계는 페이지의 렌더링에 직접적인 영향을 미칠 수 있음</p>
</blockquote>
<h2 id="5-렌더-트리-생성">5. 렌더 트리 생성</h2>
<blockquote>
<p>DOM 트리와 CSSOM 트리는 합쳐져서 렌더 트리를 형성<br>
렌더 트리는 실제 화면에 그려질 노드들만 포함</p>
</blockquote>
<h2 id="6-레이아웃">6. 레이아웃</h2>
<blockquote>
<p>렌더 트리를 기반으로, 각 노드가 화면의 어디에 위치할지, 어떤 크기를 가질지 계산하는 과정</p>
</blockquote>
<h2 id="7-페인트">7. 페인트</h2>
<blockquote>
<p>레이아웃 단계에서 계산된 위치와 크기 정보를 바탕으로, 화면에 실제 픽셀로 그리는 작업을 수행</p>
</blockquote>
<h2 id="8-합성과-레이어">8. 합성과 레이어</h2>
<blockquote>
<p>복잡한 애니메이션, 효과 또는 레이어를 최적화하기 위해 브라우저는 페이지의 일부분을 별도의 레이어로 관리할 수 있음 <br>
필요한 경우 GPU를 사용하여 이러한 레이어들을 합성하거나 처리</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[CSS 다양한 효과]]></title>
            <link>https://velog.io/@yeojin_ni/CSS-%EB%8B%A4%EC%96%91%ED%95%9C-%ED%9A%A8%EA%B3%BC</link>
            <guid>https://velog.io/@yeojin_ni/CSS-%EB%8B%A4%EC%96%91%ED%95%9C-%ED%9A%A8%EA%B3%BC</guid>
            <pubDate>Tue, 03 Sep 2024 04:09:02 GMT</pubDate>
            <description><![CDATA[<h1 id="변형과-transform-속성">변형과 transform 속성</h1>
<blockquote>
<p>변형이란, 요소의 크기나 위치를 바꾸는 것을 뜻함
이때 크기나 위치는 요소의 x축과 y축을 기준으로 바뀜<br></p>
</blockquote>
<table align="center">
  <tr>
    <th>함수</th>
    <th>설명</th>
  </tr>
  <tr>
    <td>translate(x,y)</td>
    <td>지정한 크기만큼 x축, y축 방향으로 이동</td>
  </tr>
  <tr>
    <td>scale(x,y)</td>
    <td>지정한 크기만큼 x축, y축으로 확대 및 축소</td>
  </tr>
  <tr>
    <td>skew(x,y)</td>
    <td>지정한 각도만큼 x축, y축으로 비틀어 왜곡</td>
  </tr>
  <tr>
    <td>rotate(deg)</td>
    <td>지정한 각도만큼 회전</td>
  </tr>
</table>

<h2 id="transition-속성을-이용한-변화">transition 속성을 이용한 변화</h2>
<blockquote>
<ul>
  <li>transform 속성을 이용한 변형은 좌표 평면 상에서 각 축의 값을 변경해 이루어지는 비교적 단순한 형태의 변형임. transition 속성을 이용하면 요소에 지정되어 있는 스타일 속성을 완전히 다른 스타일로 변화시킬 수 있음</li><Br>
  <li>transition은 스타일이 변화할 때의 시간이나 변화 속도 등을 추가로 지정할 수 있어 다양한 애니메이션 효과르 만들 수 있음</li><br>
  <li>transition속성은 단축 속성으로, 변화를 주고자 하는 속성이나 실행 시간, 실행 방법, 그리고 지연 시간 등에 대한 정보를 포함할 수 있음</li>
</blockquote>
</ul>

<h3 id="transition-하위-속성">transition 하위 속성</h3>
 <table align="center"> 
    <tr>
      <th>접미사</th>
      <th>설명</th>
    </tr>
    <tr>
      <td>-property</td>
      <td>변화 대상 속성 지정</td>
    </tr>
    <tr>
      <td>-duration</td>
      <td>변화가 실행될 시간 지정</td>
    </tr>
    <tr>
      <td>-delay</td>
      <td>변화 시작 전 지연시간 지정</td>
    </tr>
    <tr>
      <td>-timing-function</td>
      <td>변화 실행시 실행 곡선 방식 지정</td>
    </tr>
  </table><Br>

<h4 id="trasition-timing-function">trasition-timing-function</h4>
  <table align="center">
    <tr>
      <th>함수</th>
      <th>설명</th>
    </tr>
    <tr>
      <td>ease</td>
      <td>기본값, 점점 속도가 빨라지다가 끝날 때 다시 느려지는 방식</td>
    </tr>
    <tr>
      <td>linear</td>
      <td>처음부터 끝까지 같은 속도로 진행</td>
    </tr>
    <tr>
      <td>ease-in</td>
      <td>느리게 시작했다가 점점 빨라짐</td>
    </tr>
    <tr>
      <td>ease-out</td>
      <td>빠르게 시작했다가 점점 느려짐</td>
    </tr>
  </table>

 <hr>

<h1 id="애니메이션-효과">애니메이션 효과</h1>
<blockquote>
<p>애니메이션 사전적 정의 - 움직이지 않는 물체를 움직이는 것처럼 보이게 만드는 촬영기법 또는 그렇게 만들어진 영화<Br>
CSS는 웹페이지 상에 표시되는 콘텐츠가 TV애니메이션과 같은 동적 움직임을 구현할 수 있도록 <strong>@keyframes</strong> 모듈과 <strong>animation</strong> 속성 지원</p>
</blockquote>
<h2 id="keyframes">@keyframes</h2>
<blockquote>
<p>애니메이션을 표현하는 여러 개의 프레임은 @keyframes 모듈을 이용해 정의<br>
백분율을 이용해 프레임을 나누거나, 별도의 키워드로 간단히 나눌 수 있음</p>
</blockquote>
<pre><code>@keyframes 애니메이션_이름{
  from{width:100px;}
  to{width:200px;}
}</code></pre><pre><code>@keyframes 애니메이션_이름{
  0%{width:100px;}
  33%{width:133px;}
  66%{width:166px;}
  100%{width:200px;}
}</code></pre><h2 id="animation">animation</h2>
<table align="center">
    <tr>
      <th>접미사</th>
      <th>의미</th>
      <th>접미사</th>
      <th>의미</th>
    </tr>
    <tr>
      <td>-name</td>
      <td>적용할 키프레임 이름</td>
      <td>-direction</td>
      <td>동작 진행 방향</td>
    </tr>
    <tr>
      <td>-duration</td>
      <td>애니메이션 지속 시간</td>
      <td>-iteration-count</td>
      <td>반복 횟수</td>
    </tr>
    <tr>
      <td>-delay</td>
      <td>애니메이션 시작 전 시간</td>
      <td>-fill-mode</td>
      <td>전후 상태 설정</td>
    </tr>
    <tr>
      <td>-timing-function</td>
      <td>속도 그래프</td>
      <td>-play-state</td>
      <td>애니메이션 적용 여부</td>
    </tr>
  </table>

<pre><code>.ball{
  animation-name: moving;
  animation-duration: 2s;
  animation-delay: 0s;
  animation-timing-function: linear;
  animation-iteration-count: infinite;
  animation-direction: alternate;

  /*한줄완성코드*/
  animation: moving 2s 0s linear infinite alternate;
}

@keyframes moving{
  from{left:30px;}
  to{left:120px;}
}</code></pre>  <hr>

<h1 id="상속과-공용키워드">상속과 공용키워드</h1>
<h2 id="상속inheritance">상속(Inheritance)</h2>
<blockquote>
<p>하위 요소가 상위 요소의 스타일 속성값을 물려받는 것</p>
</blockquote>
<h3 id="상속-여부-속성">상속 여부 속성</h3>
<table align="center">
  <tr>
    <th>상속 된다</th>
    <th>상속 안 된다</th>
  </tr>
  <tr>
    <td>color, font-family, font-size,<br> font-weight, text-align, cursor 등</td>
    <td>background-color, background-image,<br> background-repeat, border, display 등</td>
  </tr>
</table>

<p>  <a src="https://www.w3.org/TR/CSS21/propidx.html">상속확인 사이트</a>  <br></p>
<h2 id="공용-키워드">공용 키워드</h2>
<blockquote>
<p>스타일 속성마다 상속 가능 여부가 기본적으로 설정되어 있지만, CSS에서는 스타일 속성의 상속 여부를 제어할 수 있는 3개의 키워드를 별도로 지원함<br>
이들은 모든 속성에 적용할 수 있는 키워드로 <strong>&#39;공용키워드&#39;</strong> 또는 <strong>&#39;전역키워드&#39;</strong>라 부르기도 함</p>
</blockquote>
<table align="center">
    <tr>
      <th>키워드</th>
      <th>의미</th>
    </tr>
    <tr>
      <td>inherit</td>
      <td>상위 요소로부터 해당 속성의 값을 받아 사용</td>
    </tr>
    <tr>
      <td>initial</td>
      <td>(브라우저에 지정되어 있는)해당 속성의 기본값을 요소에 적용</td>
    </tr>
    <tr>
      <td>unset</td>
      <td>상속 속성에 대해서는 inherit처럼,<br>
      상속되지 않는 속성에 대해서는 initial처럼 적용</td>
    </tr>
  </table><br>
<hr>

<h1 id="반응형-웹과-뷰포트-단위">반응형 웹과 뷰포트 단위</h1>
<h2 id="반응형-웹">반응형 웹</h2>
<blockquote>
<p>다양한 기기나 브라우저의 크기에 맞게 구성이나 크기를 변경해가며 반응하는 웹문서 또는 이를 위해 사용하는 기법</p>
</blockquote>
<h2 id="뷰포트">뷰포트</h2>
<blockquote>
<p>현재 화면에 보여지고 있는 영역<br>
  기기 별로 뷰포트가 다르기 때문에, 동일한 웹 페이지라도 기기에 따른 배율 조정이 발생해 화면의 크기가 다르게 보이는 현상이 나타남</p>
</blockquote>
<h3 id="뷰포트-설정--meta">뷰포트 설정 &lt; meta &gt;</h3>
<pre><code>&lt;meta
  name=&quot;viewport&quot;
  content=&quot;width=device-width, initial-scale=1.0&quot;
&gt;</code></pre><h4 id="화면-크기에-반응하는-단위">화면 크기에 반응하는 단위</h4>
<table align="center">
    <tr>
      <th>단위</th>
      <th>설명</th>
    </tr>
    <tr>
      <td>vw</td>
      <td>뷰포트 너비의 100분의 1</td>
    </tr>
    <tr>
      <td>vh</td>
      <td>뷰포트 높이의 100분의 1</td>
    </tr>
    <tr>
      <td>vmin</td>
      <td>뷰포트 너비와 높이 중 작은 쪽의 100분의 1</td>
    </tr>
    <tr>
      <td>vmax</td>
      <td>뷰포트 너비와 높이 중 큰 쪽의 100분의 1</td>
    </tr>
  </table><br>
  작업이 까다로워질 위험도 있으므로 꼭 필요할 때만 적절히 사용!
  <br><hr>

<h1 id="미디어-쿼리">미디어 쿼리</h1>
<blockquote>
<p>미디어 타입을 인식하고, 콘텐츠를 읽어들이는 기기나 브라우저의 물리적 속성을 감지할 수 있는 유용한 모듈(기능)<br>
모든 미디어 쿼리는 두가지 구성요소를 지니고 있음
  <ul>
    <li>미디어 타입</li>
    <li>조건에 대한 물음(쿼리)</li>
  </ul></p>
</blockquote>
<pre><code>@media 미디어_타입 and (조건에_대한_물음) {
  /*
  미디어 타입과 조건을
  모두 만족할 때 덮어씌울
  스타일 선언문
  */
}</code></pre><pre><code>@media screen and (max-width: 768px) {
  /*
  화면(screen)의
  너비가 768px 이하일 경우에
  여기에 정의된 스타일 선언문을
  추가 적용할 것이다
  */
}</code></pre><h2 id="미디어-쿼리-종류">미디어 쿼리 종류</h2>
<table align="center">
    <tr>
      <th>속성명</th>
      <th>정의</th>
      <th>속성명</th>
      <th>정의</th>
    </tr>
    <tr>
      <td>mid-width</td>
      <td>디스플레이 영역의 최소 너비</td>
      <td>orientation</td>
      <td>portrait 또는 landscape 감지</td>
    </tr>
    <tr>
      <td>max-width</td>
      <td>디스플레이 영역의 최대 너비</td>
      <td>color</td>
      <td>기기의 색상당 비트 수</td>
    </tr>
    <tr>
      <td>min-height</td>
      <td>디스플레이 영역의 최소 높이</td>
      <td>color-index</td>
      <td>출력 기기의 색상 테이블 수</td>
    </tr>
    <tr>
      <td>max-height</td>
      <td>디스플레이 영역의 최대 높이</td>
      <td>aspect-ratio</td>
      <td>디스플레이 영역의 너비와 높이의 비율</td>
    </tr>
  </table><br>
  <hr>


<h1 id="모듈화-디자인">모듈화 디자인</h1>
<p>반응형 웹 개발의 대세는 &#39;페이지 만들기&#39;에서 &#39;컴포넌트 만들기&#39;로 이동했다고 해도 과언이 아님 <br></p>
<p>웹 개발에 있어 컴포넌트(Component)란 독립적이고 재사용이 가능한 모듈을 뜻함 <br></p>
<p>컴포넌트 기반으로 웹을 제작하면 마치 블록 장난감을 조립하듯 각각의 컴포넌트 간 조합을 이용해 화면을 구성할 수 있어 효율이 좋아짐</p>
<h2 id="모듈화-디자인의-이점">모듈화 디자인의 이점</h2>
<blockquote>
<ul>
  <li>반응형 컴포넌트를 만들고, 그것들을 조립해 하나의 페이지를 만들면 페이지는 자연스럽게 반응형 페이지가 됨</li>
  <li>스타일 재사용이 용이함. 필요한 경우 추가 스타일을 적용하면 됨</li>
  <li>페이지의 일관성 유지 용이</li>
  </ul>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[GET방식과 POST방식]]></title>
            <link>https://velog.io/@yeojin_ni/GET%EB%B0%A9%EC%8B%9D%EA%B3%BC-POST%EB%B0%A9%EC%8B%9D</link>
            <guid>https://velog.io/@yeojin_ni/GET%EB%B0%A9%EC%8B%9D%EA%B3%BC-POST%EB%B0%A9%EC%8B%9D</guid>
            <pubDate>Mon, 02 Sep 2024 15:00:13 GMT</pubDate>
            <description><![CDATA[<p><strong>HTTP</strong>메서드 <strong>GET</strong>과 <strong>POST</strong></p>
<h1 id="get">GET</h1>
<blockquote>
<p>리소스를 서버로부터 요청할때 사용</p>
</blockquote>
<p>URL에 쿼리 파라미터를 포함하여 데이터 전달</p>
<pre><code>ex) https://url?&#39;key=value&#39;</code></pre><p>브라우저에 기록이 되고, 캐시되어 동일한 요청이 반복될 경우 더 빠른 응답을 받을 수 있음</p>
<p>브라우저 히스토리나 서버로그에 노출될 수 있음 주의!</p>
<h2 id="get-사용케이스">GET 사용케이스</h2>
<blockquote>
<p>페이지 조회, 리소스 조회, 검색결과, 링크 클릭시 사용</p>
</blockquote>
<h1 id="post">POST</h1>
<blockquote>
<p>서버에 데이터를 제출할 때 사용</p>
</blockquote>
<p>데이터 전송시 body부분에 담겨 전송</p>
<p>URL에 데이터가 노출되지 않아 노출의 위험이 적음
하지만, 보안을 위해 HTTPS와 함께 사용하는것이 좋음</p>
<h2 id="post-사용케이스">POST 사용케이스</h2>
<blockquote>
<p>로그인, 회원가입, 데이터 업로드, 사용자 민감정보 전송 등 데이터를 서버로 전송해야하는 상황에서 사용</p>
</blockquote>
<h1 id="보안-측면">보안 측면</h1>
<blockquote>
<p>보안을 고려할 때는 민감한 정보의 전송이 필요한 경우 <strong>POST()</strong> 사용<br>
<strong>GET()</strong>은 정보 조회와 같이 민감하지 않은 데이터 요청에 사용하는 것이 좋음</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[CSS 기초 요소]]></title>
            <link>https://velog.io/@yeojin_ni/CSS-%EA%B8%B0%EC%B4%88-%EC%9A%94%EC%86%8C</link>
            <guid>https://velog.io/@yeojin_ni/CSS-%EA%B8%B0%EC%B4%88-%EC%9A%94%EC%86%8C</guid>
            <pubDate>Mon, 02 Sep 2024 04:13:02 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/yeojin_ni/post/fa14ddf7-c2eb-408f-b3ec-c62e7213e5c2/image.png" alt=""></p>
<h1 id="display">&lt; display &gt;</h1>
<blockquote>
<p>display 속성에 지정할 수 있는 대표적인 설정</p>
</blockquote>
<table align="center">
  <tr>
    <th>속성명</th>
    <th>설명</th>    
  </tr>
  <tr>
    <td>none</td>
    <td>요소를 화면에 표시하지 않음</td>
  </tr>
  <tr>
    <td>block</td>
    <td>요소를 블록 레벨 요소로 만듬</td>
  </tr>
  <tr>
    <td>inline</td>
    <td>요소를 인라인 요소로 만듬</td>
  </tr>
  <tr>
    <td>inline-block</td>
    <td>요소를 인라인 요소로 표시하되, 블록 레벨의 특성 추가</td>
  </tr>
</table>

<h1 id="float">&lt; float &gt;</h1>
<blockquote>
<p>요소를 문서의 흐름에서 제외시킨 채 부모 요소 또는 루트 요소 기준으로 위치 변경 <br>
선택된 요소가 문서의 흐름에서 제외되어 상위 요소의 왼쪽 또는 오른쪽 면에 붙는 형태로 배치되도록 하는 특징을 가지고 있음</p>
</blockquote>
<blockquote>
<p>float 속성을 적용한 요소를 &#39;부동 요소&#39;라 부르기도 하는데 이는 위치를 이동하면서 다른 요소의 공간에까지 영향을 주며, 이를 잘 활용하면 유용하나 float을 적용하지 않는 요소의 공간에 영향을 주어 때론 역효과를 가져옴 <br>
이를 해결하기 위한 속성으로 &#39;clear&#39;가 있음</p>
</blockquote>
<h1 id="position">&lt; position &gt;</h1>
<blockquote>
<p>문서 상에 요소를 배치하는 방법 정의 <br>
최종 위치 결정 - top, bottom, right, left</p>
</blockquote>
<table align="center">
  <tr>
    <th>속성값</th>
    <th>설명</th>
  </tr>
  <tr>
    <td>static</td>
    <td>기본값으로, 요소를 일반적인 문서의 흐름에 맞게 배치</td>
  </tr>
  <tr>
    <td>relative</td>
    <td>문서의 흐름에 맞춰 배치된 자리를 기준으로 요소 이동</td>
  </tr>
  <tr>
    <td>absolute</td>
    <td>Position이 지정된 상위 요소를 기준으로 요소이동 <br>이때 요소는 문서의 흐름에서 제외</td>
  </tr>
  <tr>
    <td>fixed</td>
    <td>화면을 기준으로 요소의 위치 고정</td>
  </tr>
</table>

<h2 id="z-index">z-index</h2>
<blockquote>
<p>요소의 쌓임 순서(stack order) 정의 <br>
정수 값을 지정하여 쌓임 맥락(stacking context)에서의 레벨을 정의하는 방식으로 적용, 위치 지정 요소에 대해 적용할 수 있는 속성 <br>
위치 지정 요소 - Position 속성이 정의되어 있는 요소</p>
</blockquote>
<blockquote>
<p>z-index 기본값 - <strong>auto</strong><br>
높은 값을 가질 수록 윗층에 위치</p>
</blockquote>
<h2 id="overflow">overflow</h2>
<table align="center">
  <tr>
    <th>속성값</th>
    <th>설명</th>
  </tr>
  <tr>
    <td>visible</td>
    <td>기본값, 영역을 벗어난 콘텐츠를 그대로 보여줌</td>
  </tr>
  <tr>
    <td>hidden</td>
    <td>영역을 벗어난 콘텐츠를 잘라내어 보이지 않게 함</td>
  </tr>
  <tr>
    <td>scroll</td>
    <td>영역을 벗어난 콘텐츠를 잘라내어 보이지 않게 하고, 잘려진 콘텐츠 진행 방향으로 스크롤을 만듬</td>
  </tr>
  <tr>
    <td>auto</td>
    <td>웹 브라우저의 설정 값을 따름<br>
        데스크톱 브라우저에서는 주로 scroll로 처리
    </td>
  </tr>
</table>

<h1 id="선택자">선택자</h1>
<h2 id="선택자-유형">선택자 유형</h2>
<blockquote>
<table align="center">
  <tr>
    <th>선택자</th>
    <th>의미</th>
    <th>사용 기호</th>
  </tr>
  <tr>
    <td>속성 선택자</td>
    <td>특정 속성을 명시하여 요소를 선택</td>
    <td>[속성명]</td>
  </tr>
  <tr>
    <td>하위 요소 선택자</td>
    <td>상위 요소에 포함된 하위 요소를 선택</td>
    <td>공백</td>
  </tr>
  <tr>
    <td>자식 요소 선택자</td>
    <td>상위 요소의 바로 한 단계 하위 요소를 선택</td>
    <td>></td>
  </tr>
  <tr>
    <td>인접 형제 선택자</td>
    <td>형제 요소 중 첫 번째 형제 요소를 선택
    </td>
    <td>+</td>
  </tr>
  <tr>
    <td>형제 요소 선택자</td>
    <td>형제 요소를 선택<br>
        유의사항 : 뒤이어 등장하는 형제 대상
    </td>
    <td>~</td>
  </tr>
</blockquote>
</table>

<blockquote>
<h3 id="기호와-함께-사용하는-속성-선택자br">기호와 함께 사용하는 속성 선택자<br></h3>
<blockquote>
</blockquote>
</blockquote>
<ul>
  <li>* : 값의 포함 여부</li>
  <li>^ : 값의 시작 여부</li>
  <li>& : 값의 끝 여부</li>
</ul>

<h1 id="의사요소와-의사클래스">의사요소와 의사클래스</h1>
<h2 id="의사클래스">의사클래스</h2>
<blockquote>
<p>의사클래스(가상클래스)는 선택자에 추가하는 키워드로,<br> 요소가 어떤 특정한 상태가 되었을 때 요소를 선택하겠다는 의미</p>
</blockquote>
<pre><code>선택자 : 의사클래스{
    속성명: 속성값;
}</code></pre><table align="center">
  <tr>
    <th>속성값</th>
    <th>설명</th>
  </tr>
  <tr>
    <td>hover</td>
    <td>마우스 포인터가 요소에 올라가 있다</td>
  </tr>
  <tr>
    <td>active</td>
    <td>사용자가 요소를 활성화했다<br> 
      (ex - 마우스 누르기)</td>
  </tr>
  <tr>
    <td>focus</td>
    <td>요소가 포커스 받고 있다</td>
  </tr>
  <tr>
    <td>disabled</td>
    <td>비활성 상태의 요소이다</td>
  </tr>
  <tr>
    <td>nth-child()</td>
    <td>형제 사이에서의 순서에 따라 요소를 선택한다</td>
  </tr>
</table>


<h2 id="의사요소">의사요소</h2>
<blockquote>
<p>의사요소(pseudo-elements)는 선택자에 추가하는 키워드로, 이를 이용하면 선택한 요소의 특정 부분에 대한 스타일을 정의 할 수 있음</p>
</blockquote>
<pre><code>선택자 :: 의사요소{
    속성명: 속성값;
}</code></pre><table align="center">
  <tr>
    <th>속성값</th>
    <th>설명</th>
  </tr>
  <tr>
    <td>after</td>
    <td>요소의 앞에 의사 요소르 생성 및 추가</td>
  </tr>
  <tr>
    <td>before</td>
    <td>요소의 뒤에 의사 요소를 생성 및 추가</td>
  </tr>
  <tr>
    <td>first-line</td>
    <td>블록 레벨 요소의 첫 번째 선에 스타일 적용</td>
  </tr>
  <tr>
    <td>marker</td>
    <td>목록 기호의 스타일 적용</td>
  </tr>
  <tr>
    <td>placeholder</td>
    <td>입력 요소의 플레이스홀더(자리표시자) 스타일 적용        </td>
  </tr>
</table>
]]></description>
        </item>
        <item>
            <title><![CDATA[시맨틱 마크업]]></title>
            <link>https://velog.io/@yeojin_ni/%EC%8B%9C%EB%A9%98%ED%8B%B1-%EB%A7%88%ED%81%AC%EC%97%85</link>
            <guid>https://velog.io/@yeojin_ni/%EC%8B%9C%EB%A9%98%ED%8B%B1-%EB%A7%88%ED%81%AC%EC%97%85</guid>
            <pubDate>Fri, 30 Aug 2024 11:38:15 GMT</pubDate>
            <description><![CDATA[<h1 id="시맨틱-마크업">시맨틱 마크업</h1>
<blockquote>
<p>시맨틱은 &#39;의미론적인&#39;이라는 의미<br>
시맨틱 태그는 개발자와 브라우저에게 의미를 제공</p>
</blockquote>
<pre><code>&lt;의미&gt;콘텐츠&lt;/의미&gt;</code></pre><p>태그명은 &#39;이 요소가 가진 목적이나 역할은 무엇인가&#39;를 나타냄
-&gt; 검색 엔진에 좋은 단서</p>
<hr>

<h2 id="시맨틱-장점">시맨틱 장점</h2>
<blockquote>
<p>대부분의 시맨틱 태그는 컨테이너 태그(span, div)와 같이 특별한 스타일을 제공하지 않음
But, 아래 장점이 있음</p>
</blockquote>
<ul>
  <li>검색 엔진은 시맨틱 태그를 중요한 단서로 봄</li>
  <li>시각 장애가 있는 사용자가 화면 판독기로 페이지 탐색할 때 참조 됨</li>
  <li>코드의 가독성이 좋아짐</li>
  <li>컨테이너의 남용을 방지할 수 있어 코드 쓰기가 편함</li>
</ul>

<hr>

<h2 id="대표적인-시맨틱-태그">대표적인 시맨틱 태그</h2>
<table align="center">
  <tr>
    <th>태그명</th>
    <th>의미</th>
    <th>태그명</th>
    <th>의미</th>
  </tr>
  <tr>
    <td>< article ></td>
    <td>독립적인 콘텐츠</td>
    <td>< header ></td>
    <td>머릿말</td>
  </tr>
  <tr>
    <td>< aside ></td>
    <td>별도의 콘텐츠</td>
    <td>< main ></td>
    <td>주된 콘텐츠</td>
  </tr>
  <tr>
    <td>< details ></td>
    <td>추가적인 상세한 정보</td>
    <td>< nav ></td>
    <td>네이게이션 링크</td>
  </tr>
  <tr>
    <td>< figcaption ></td>
    <td>figure의 자막</td>
    <td>< section ></td>
    <td>콘텐츠의 한 섹션(절)</td>
  </tr>
  <tr>
    <td>< figure ></td>
    <td>설명 붙는 독립 콘텐츠</td>
    <td>< summary ></td>
    <td>detail의 헤더</td>
  </tr>
  <tr>
    <td>< footer ></td>
    <td>맺음말</td>
    <td>< time ></td>
    <td>강조할 시간</td>
  </tr>
</table>

<hr>

<h2 id="시맨틱-태그를-사용한-html-구조">시맨틱 태그를 사용한 Html 구조</h2>
<p><img src="https://velog.velcdn.com/images/yeojin_ni/post/afb094dd-4b95-476d-84f7-c9319042f115/image.png" alt="">
<a src="https://www.semrush.com/blog/semantic-html5-guide/">이미지 출처</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[CSS를 알아보자]]></title>
            <link>https://velog.io/@yeojin_ni/CSS%EB%A5%BC-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90</link>
            <guid>https://velog.io/@yeojin_ni/CSS%EB%A5%BC-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90</guid>
            <pubDate>Fri, 30 Aug 2024 06:03:29 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/yeojin_ni/post/32e943f6-9ec4-4715-a33b-09395c48fbdb/image.png" alt=""></p>
<h1 id="css---cascading-style-sheet">CSS - Cascading Style Sheet</h1>
<blockquote>
<p>연속적으로 스타일을 정의하는 문서</p>
</blockquote>
<li>Cascading - 폭포같은, 계속되는, 연속적인</li>
<li>Style - 멋을 내다</li>
<li>Sheet - (종이나 문서) 한 장 </li>

<hr>

<h2 id="문법">문법</h2>
<blockquote>
<p>HTML코드가 다수의 &#39;태그&#39;로 구성되는 것처럼,
CSS코드는 다수의 &#39;스타일 선언문&#39;으로 구성</p>
</blockquote>
<blockquote>
<pre><code>선택자{
    속성명: 속성값;
}</code></pre></blockquote>
<pre><code>&lt;li&gt;선택자 - 어떤 요소에 스타일을 적용 할지에 대한 정보&lt;/li&gt;
&lt;li&gt;{중괄호} - 선택한 요소에 적용할 스타일을 정의하는 영역&lt;/li&gt;
&lt;li&gt;속성명 - 어떤 스타일을 정의하고 싶은지에 대한 정보&lt;/li&gt;
&lt;li&gt;속성값 - 어떻게 정의하고 싶은지에 대한 정보&lt;/li&gt;

## CSS 주석
</code></pre><p>/<em>주석의 내용</em>/</p>
<pre><code>
## CSS 3
&gt; 현 시점 HTML5가 웹 개발 표준으로 인정받고 있는 것처럼,
스타일시트 또한 웹 표준 기술이 존재 -&gt; CSS3

&lt;hr&gt;

## HTML에 CSS를 더하려면
&gt; &lt;li&gt;인라인 스타일 - 태그에 직접 기술하기&lt;/li&gt;
&lt;li&gt;스타일 태그 - 스타일시트를 위한 태그를 추가하여 기술하기&lt;/li&gt;
&lt;li&gt;문서 간의 연결 - 스타일시트 문서를 따로 작성하여 HTML문서와 연결하기&lt;/li&gt;

### 인라인 스타일 - 우선 적용
&gt; 태그에 style 속성을 추가하여 요소에 직접적으로 스타일을 정의하는 방식
선택자 필요 X
(웹 콘텐츠와 스타일시트를 분리하기 위해서 사용하지 않는 편이 좋음)</code></pre><p style="color: blue;">
    글자를 파랗게 만들어줘
</p>

<h3 id="스타일-태그">스타일 태그</h3>
<blockquote>
<p>HTML 문서에 style 태그를 추가하여 그 안에 CSS코드 작성
  &#39;내부 스타일시트&#39;라 표현하기도 함</p>
</blockquote>
<pre><code>&lt;style&gt;
  /* style 태그 안에는 CSS 코드 작성해야 함*/
  p{color: red;}
&lt;/style&gt;</code></pre><h3 id="문서-간의-연결">문서 간의 연결</h3>
<blockquote>
<p>확장자가 *.css인 스타일시트 파일을 생성해 그 안에 CSS코드를 작성하고,
  HTML문서에 이를 연결해 줄 수 있음
  이때 link 태그 사용</p>
</blockquote>
<pre><code>&lt;link href=&quot;./style.css&quot; rel=&quot;stylesheet&quot;&gt;</code></pre><blockquote>
<blockquote>
<li>href - 연결하고자 하는 외부 소스의 url을 기술하는 속성</li>
  <li>rel - 현재 문서(HTML)와 외부 소스의 연관 관계를 기술하는 속성</li>
  -> link태그는 HTML문서의 head태그 내부에서 사용해야 함
</blockquote>
</blockquote>
<h3 id="스타일-적용">스타일 적용</h3>
<blockquote>
<p>  인라인 스타일은 우선적으로 적용
    인라인 스타일이 아닌 경우, 나중에 쓰여진 선언문이 적용</p>
</blockquote>
<hr>

<h2 id="선택자-유형">선택자 유형</h2>
<blockquote>
<p>스타일 선언문의 선택자를 어떻게 입력하는가에 따라 스타일이 적용될 요소가 결정
이때 요소는 오직 하나만 선택할 수도, 여러 개를 동시에 선택할 수도 있음</p>
</blockquote>
<blockquote>
<blockquote>
<li>전체 선택자 - 문서 내 모든 요소 선택 - *</li>
</blockquote>
</blockquote>
<li>태그 선택자 - 특정 태그로 만들어진 모든 요소 선택 - 태그명</li>
<li>클래스 선택자 - 특정 클래스 값이 지정된 모든 요소 선택 - .클래스값</li>
<li>아이디 선택자 - 특정 아이디 값이 지정된 요소 선택 - #아이디값</li>
<li>그룹 선택자 - 여러 유형의 선택자를 한꺼번에 선택 - 선택자,선택자,선택자 {}</li>

<h3 id="선택자-우선순위">선택자 우선순위</h3>
<blockquote>
<p>쓰여진 순서랑 관계없이 적용되는 순위
        1. 아이디 선택자
        2. 클래스 선택자
        3. 태그 선택자</p>
</blockquote>
<hr>

<h2 id="박스-모델-box-model">박스 모델 (box model)</h2>
<blockquote>
<p>브라우저 화면은 가로와 세로를 축으로 하는 2차원 공간
따라서 브라우저를 통해 렌더링 되는 웹 요소들 또한 그 안에서 개별적으로 너비와 높이를 가짐 <br>
박스 모델은 너비와 높이를 가지는 개별 요소를 가리켜 &#39;박스&#39;라 표현하고,
박스를 네가지 세부 영역으로 나누어 구분한 일종의 디자인 모델 <br>
CSS로 스타일을 정의할 수 있는 모든 요소에는 박스 모델 관련 속성 중 일부 또는 전부를 적용할 수 있으며, CSS는 영역 별로 크기를 따로 설정할 수 있도록 다양한 속성들을 제공
<img src="https://velog.velcdn.com/images/yeojin_ni/post/5d553b33-7d5e-4d2d-9d28-abcbbf2e05f7/image.png" alt=""></p>
</blockquote>
<table align="center">
  <tr>
    <th>영역</th>
    <th>설명</th>
    <th>관련 속성</th>
  </tr>
  <tr>
    <td>콘텐츠 영역</td>
    <td>요소 내에 포함된 콘텐츠를 표시하는 영역</td>
    <td>width, height</td>
  </tr>
  <tr>
    <td>안쪽 여백</td>
    <td>테두리 안에서 콘텐츠 주변을 감싸는 여백</td>
    <td>padding</td>
  </tr>  
  <tr>
    <td>경계선(테두리)</td>
    <td>콘텐츠와 안쪽 여백을 둘러싸는 테두리</td>
    <td>border</td>
  </tr>
  <tr>
    <td>바깥쪽 여백</td>
    <td>테두리 바깥에서 요소를 감싸는 여백</td>
    <td>margin</td>
  </tr>
</table>

<hr>

<h2 id="테두리-스타일">테두리 스타일</h2>
<blockquote>
<p>테두리는 화면 상에서 요소가 차지하고 있는 공간을 뚜렷하게 표시해 다른 요소와 쉽게 구분할 수 있게 해주는 유용한 영역<br>
테두리 스타일을 정의할 때 단축 속성인 border를 사용하거나 border의 하위 속성을 개별적으로 사용하는 방법을 사용</p>
</blockquote>
<table align="center">
  <tr>
    <th>속성명</th>
    <th>용도</th>
  </tr>
  <tr>
    <td>border-width</td>
    <td>테두리의 두께를 지정</td>
  </tr>
  <tr>
    <td>border-style</td>
    <td>점선, 실선, 겹선 등으로 테두리의 모양을 지정</td>
  </tr>
  <tr>
    <td>border-color</td>
    <td>테두리의 색상을 지정</td>
  </tr>
  <tr>
    <td>border</td>
    <td>테두리의 두께, 모양, 색상 등을 한번에 지정</td>
  </tr>
  <tr>
    <td>border-radius</td>
    <td>박스의 모서리를 둥글게 만들어줌</td>
  </tr>
</table>

<hr>

<h2 id="여백-다루기">여백 다루기</h2>
<table align="center">
  <tr>
    <th>개수</th>
    <th>설명</th>
    <th>예</th>
  </tr>
  <tr>
    <td>1</td>
      <td>여백의 모든 면에 동일한 값을 지정</td>
      <td>margin : 10px;</td>
  </tr>
  <tr>
      <td>2</td>
      <td>위아래, 왼쪽오른쪽 여백의 값 따로 지정</td>
      <td>margin : 10px 20px;</td>
  </tr>
  <tr>
      <td>3</td>
      <td>윗쪽, 왼쪽 오른쪽, 아래쪽 여백 순서로 값 지정</td>
      <td>margin : 10px 20px 15px;</td>
  </tr>
  <tr>
      <td>4</td>
      <td>위,아래,왼,오 순서대로 각각 따로 지정</td>
      <td>margin : 10px 20px 30px 40px;</td>
  </tr>
</table>

<h3 id="box-sizing">box-sizing</h3>
<blockquote>
<p>콘텐츠 영역의 크기를 결정하기 위해선 width나 height 사용
여기에 padding 속성을 추가 정의하면 여백이 생기면서 요소가 기존보다 더 커지게 되는데 이를 원치 않을경우 box-sizing 사용</p>
</blockquote>
<li>content-box</li>
<li>border-box</li>

<hr>

<h2 id="배경-다루기">배경 다루기</h2>
<blockquote>
<p>콘텐츠와 어울리는 적절한 배경을 추가함으로써 콘텐츠를 더욱 돋보이게 만들 수 있음<br>
박스 모델에 배경으로 추가된 색상이나 이미지 등은 박스 모델의 바깥쪽 여백을 제외한 나머지 영역 안에서 요소의 콘텐츠를 뒷받침<br></p>
</blockquote>
<li>background</li>
<li>background의 하위 속성</li> <br>
<table align="center">
  <tr>
    <th>접미사</th>
      <th>설명</th>
    <th>속성값 유형</th>
  </tr>
  <tr>
    <td>-color</td>
    <td>요소의 배경 색상 지정</td>
    <td>색상</td>
  </tr>
  <tr>
    <td>-clip</td>
    <td>요소 내 배경의 적용 범위</td>
    <td>별도의 키워드</td>
  </tr>
  <tr>
    <td>-image</td>
    <td>요소의 배경 이미지 지정</td>
    <td>이미지 url</td>
  </tr>
  <tr>
    <td>-origin</td>
    <td>요소 내 배경의 시작 위치</td>
    <td>별도의 키워드</td>
  </tr>
  <tr>
    <td>-size</td>
    <td>배경 이미지의 크기</td>
    <td>수치와 단위</td>
  </tr>
  <tr>
    <td>-position</td>
    <td>배경 이미지의 위치</td>
    <td>수치와 단위</td>
  </tr>
  <tr>
    <td>-repeat</td>
    <td>배경 이미지의 반복 패턴</td>
    <td>별도의 키워드</td>
  </tr>
</table>

<p align="center">
  <img
src="https://velog.velcdn.com/images/yeojin_ni/post/d37bc261-b316-4f9a-8f1f-fc8ae1d66f1b/image.png" width="60%">
  <img
src="https://velog.velcdn.com/images/yeojin_ni/post/5fd01021-2418-45e1-8a16-d42e746b4ec6/image.png">
</p>

<hr>

<h2 id="색상-지정">색상 지정</h2>
<blockquote>
<p>글자 색을 지정할 때는 color속성 사용<br>
색 지정 방법은 글자 색, 테두리 색, 배경 색 모두에 동일</p>
</blockquote>
<li>키워드 - 색상을 나타내는 키워드(영단어) 입력</li>
<li>rgb함수 - rgb함수에 수치를 입력해 색상 결정</li>
<li>hsl함수 - hsl함수에 수치를 입력해 색상 결정</li>
<li>16진수 값 - 빨강,초록,파랑의 비율을 16진수로 표현해 색상 결정</li>

<h3 id="rgb함수">rgb함수</h3>
<blockquote>
<p>빛의 3원색인 red, green, blue의 줄임말<br>
CSS는 빨강, 초록, 파랑 각 색상의 비율을 지정해 색상을 결정할 수 있는 rgb함수와 투명도를 추가 지정할 수 있는 rgba함수 지원</p>
</blockquote>
<pre><code>rgb(r, g, b)
rgba(r, g, b, 투명도(0~1))</code></pre><h3 id="hsl함수">hsl함수</h3>
<blockquote>
<p>색조(hue)와 채도(saturation), 그리고 조도(lightness)를 각각 지정해 색상을 결정하는 함수<br>
투명도를 추가로 지정하고자 할 때는 hsla함수 사용</p>
</blockquote>
<pre><code>hsl(색조값, 채도값(%), 조도값(%))
hsla(색조값, 채도값(%), 조도값(%), 투명도(0~1))</code></pre><h3 id="16진수-값">16진수 값</h3>
<blockquote>
<p>색상을 지정할 때 해시(#) 기호로 시작하는 여섯자리 16진수 값을 입력하는 방법 <br>
&#39;RGB 색상코드&#39;라고 부르기도 함&#39;</p>
</blockquote>
<pre><code>#RRGGBB
#RRGGBBAA</code></pre><li>
  0 1 2 3 4 5 6 7 8 9 A B C D E F (16 진수)
</li>
<li>
  00 ~ FF : 255
</li>

<h3 id="opacity---투명도-지정하는-또-다른-방법">opacity - 투명도 지정하는 또 다른 방법</h3>
<blockquote>
<p>opacity : 0 ~ 1 값</p>
</blockquote>
<p align="center">
  <img
src="https://velog.velcdn.com/images/yeojin_ni/post/41ba6e96-eb7c-48b5-b77b-0091c6cc8fa9/image.png">
</p>

<hr>

<h2 id="텍스트-꾸미기">텍스트 꾸미기</h2>
<h3 id="font-family---글꼴-바꾸기">font-family - 글꼴 바꾸기</h3>
<blockquote>
<p>요소에 포함된 텍스트의 글꼴을 정의할 때 사용하는 속성 <br>
한 개 이상의 글꼴 지정<br>
입력한 글꼴 뒤에 쉼표를 입력한 후에 새로운 글꼴을 이어서 입력하는 방식으로 속성값 지정
-&gt; 가장 먼저 쓰여진 글꼴부터 우선적으로 요소에 적용 </p>
</blockquote>
<pre><code>p{
    font-family:Arial, Helvetica, sans-serif;
}</code></pre><h3 id="웹-폰트-사용하기">웹 폰트 사용하기</h3>
<blockquote>
<p>컴퓨터 시스템에 해당 폰트가 설치되어 있지 않은 경우에도 웹 서버로부터 이를 제공받아 사용할 수 있는 &#39;웹 전용 글꼴&#39;<br>
font-family를 이용한 글꼴 적용시 잘못 입력된 글꼴이거나 시스템에 설치되어 있지 않은 글꼴인 경우에는 요소에 적용되지않는데, 웹 폰트를 이용하면 그런 문제가 발생하는 것을 방지할 수 있음</p>
</blockquote>
<table align="center">
  <tr>
    <th>속성명</th>
     <th>설명</th>
    <th>속성값 유형</th>
  </tr>
  <tr>
    <td>font-size</td>
    <td>글자 크기 지정</td>
    <td>수치와 단위</td>
  </tr>
  <tr>
    <td>font-weight</td>
    <td>글자 두께 지정</td>
    <td>별도의 키워드 (100~900)</td>
  </tr>
  <tr>
    <td>line-height</td>
    <td>행 높이 지정</td>
    <td>수치와 단위</td>
  </tr>
  <tr>
    <td>text-align</td>
    <td>텍스트 정렬 방식 지정</td>
    <td>별도의 키워드</td>
  </tr>
  <tr>
    <td>text-decoration</td>
    <td>텍스트 줄 긋기</td>
    <td>별도의 키워드</td>
  </tr>
</table>

<p><a href="https://fonts.google.com/?subset=korean&amp;script=Kore">웹 폰트 - 구글폰트</a></p>
<h3 id="단위">단위</h3>
<table align="center">
  <tr>
    <th>단위</th>
    <th>용도</th>
  </tr>
  <tr>
    <td>rem</td>
    <td>루트 요소(html태그)의 글자 크기를 배수로 계산해 적용하는 상대 단위</td>
  </tr>
  <tr>
    <td>em</td>
    <td>부모 요소의 글자 크기를 배수로 계산해 적용하는 상대 단위</td>
  </tr>
</table>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTML 기본 문법]]></title>
            <link>https://velog.io/@yeojin_ni/HTML-%EA%B8%B0%EB%B3%B8-%EB%AC%B8%EB%B2%95</link>
            <guid>https://velog.io/@yeojin_ni/HTML-%EA%B8%B0%EB%B3%B8-%EB%AC%B8%EB%B2%95</guid>
            <pubDate>Thu, 29 Aug 2024 08:33:46 GMT</pubDate>
            <description><![CDATA[<h1 id="태그">태그</h1>
<blockquote>
<ul>
  <li>HTML은 웹 페이지의 어느 부분에 텍스트가 있어야 할지, 어느 부분에 이미지가 있어야할지 등을 나타내는 역할</li>
  <li>HTML은 '태그(tag)'라 불리는 표기법을 사용해 맡은 역할을 수행</li>
  <li>태그의 구성요소</li>
  <ol>- 태그의 이름(태그명)</ol>
  <ol>- 여는 태그(시작 태그)</ol>
  <ol>- 닫는 태그(끝 태그)</ol>
  <ol>- 콘텐츠</ol>
</blockquote>
</ul>

<p><img src="https://velog.velcdn.com/images/yeojin_ni/post/24574f83-75bd-44d5-9103-e54d1f6bdcf7/image.png" alt=""></p>
<h4 id="콘텐츠-생략이-가능할-경우는-아래처럼">콘텐츠 생략이 가능할 경우는 아래처럼</h4>
<p><img src="https://velog.velcdn.com/images/yeojin_ni/post/df689b77-946d-4992-ac4d-7da2ad7e00a1/image.png" alt=""></p>
<h2 id="태그-작성시-주의점">태그 작성시 주의점</h2>
<blockquote>
<ul>
  <li>태그 이름은 소문자</li>
  <li>여는 태그와 닫는 태그 정확히 입력 (두개 세트로 보기!!)</li>
  <li>태그의 콘텐츠로 또 다른 태그가 포함될 수 있음</li>
  <li>들여쓰기 적절히 사용</li>
</blockquote>
</ul>

<h2 id="요소의-구분">요소의 구분</h2>
<blockquote>
<p>태그를 통해 표현하는 웹 요소들은 &#39;블록 레벨 요소&#39;와 &#39;인라인 요소&#39;로 구분할 수 있음</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/yeojin_ni/post/a35c5734-a1f5-472c-82be-b2fd294973b2/image.png" alt=""></p>
<hr>

<h1 id="속성">속성</h1>
<blockquote>
<p>태그의 부가적인 기능을 정의하는 것으로, 선택사항</p>
</blockquote>
<ul>
  <li>시작 태그 내부에 정의</li>
  <li>갯수 제한 X</li>
  <li>태그에 추가할 속성이 여러개일 경우 각각 구분하기 위해 공백 사용</li>
  <li>속성을 추가한 태그에 의해 표시되는 콘텐츠는 속성으로 인해 형태가 바뀔 수도 있음 (but, 겉으로 드러나지 않는 속성도 존재)</li>
</ul>

<h4 id="속성이-추가된-태그의-형태">속성이 추가된 태그의 형태</h4>
<p><img src="https://velog.velcdn.com/images/yeojin_ni/post/630acfbe-6f84-48f4-8b02-bdde74adb836/image.png" alt=""></p>
<h4 id="단일-태그에도-속성-추가-가능">단일 태그에도 속성 추가 가능</h4>
<p><img src="https://velog.velcdn.com/images/yeojin_ni/post/235a563d-89b9-47a7-a534-2da7f0a246c7/image.png" alt=""></p>
<h2 id="전역-속성">전역 속성</h2>
<blockquote>
<p>모든 HTML 태그에서 공통으로 사용할 수 있는 송성</p>
</blockquote>
<table>
  <tr>
    <th>전역 속성</th>
    <th>설명</th>
  </tr>
  <tr>
    <td>id</td>
    <td>요소 고유한 이름을 부여하는 식별자 역할</td>
  </tr>
  <tr>
    <td>class</td>
    <td>요소를 그룹별로 묶을 수 있는 식별자 역할</td>
  </tr>
  <tr>
    <td>style</td>
    <td>요소에 적용할 CSS 스타일 선언</td>
  </tr>
  <tr>
    <td>title</td>
    <td>요소의 추가 정보를 제공하는 텍스트, 툴팁 제공</td>
  </tr>
</table>

<hr>

<h1 id="주석">주석</h1>
<blockquote>
<ul>
  <li>주석은 사람에게는 보이지만, 컴퓨터(웹브라우저)에는 보이지 않는 코드</li>
  <li>주로 코드에 대한 메모를 남기기 위한 용도로 사용</li>
  <li>주석을 만들기 위해 총 7개의 기호 사용</li>
</blockquote>
</ul>

<p><img src="https://velog.velcdn.com/images/yeojin_ni/post/2cc89c68-9616-4db7-a2cc-4993e6fa419f/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTML vs HTML5 차이]]></title>
            <link>https://velog.io/@yeojin_ni/HTML-vs-HTML5-%EC%B0%A8%EC%9D%B4</link>
            <guid>https://velog.io/@yeojin_ni/HTML-vs-HTML5-%EC%B0%A8%EC%9D%B4</guid>
            <pubDate>Thu, 29 Aug 2024 07:56:42 GMT</pubDate>
            <description><![CDATA[<h1 id="html">HTML</h1>
<h3 id="하이퍼-텍스트와-콘텐츠를-표시해주는-언어">하이퍼 텍스트와 콘텐츠를 표시해주는 언어</h3>
<blockquote>
<p>하이퍼 텍스트 마크업 랭귀지(HyperText Markup Language)</p>
</blockquote>
<ul>
  <li>HyperText - 하이퍼링크를 통해 어떤 문서에서 다른 문서로 접근할 수 있는 텍스트</li>
  <li>Markup - (콘텐츠를) 표시하다</li>
  <li>Language - 언어</li>
</ul>


<p>웹브라우저를 통해 표시되는 웹페이지의 콘텐츠를 정의하기 위해 사용하는 언어
<img src="https://velog.velcdn.com/images/yeojin_ni/post/822ceaa1-2eca-4a0d-a266-8dcc8504fbb7/image.png" alt=""></p>
<h1 id="html5">HTML5</h1>
<blockquote>
<ul>
  <li>1991년 웹 창시자 팀 버너스리에 의해 최초로 제안</li>
  <li>
첫 등장 이후 오랜 시간이 흐른만큼, HTML은 만들어진 순간부터 지금까지 계속해서 기능을 개선하거나 추가해 가며 발전해 옴</li>
    <li>그 과정에서 새로운 버전의 HTML이 계속해서 발표되어 왔는데, 현 시점에는 HTML5가 웹 개발 표준으로 인정받고 있음</li>    
</blockquote>
</ul>



<h2 id="html-문서">HTML 문서</h2>
<blockquote>
</blockquote>
<ul>
  <li>HTML코드는 결국 텍스트</li>
    <li>따라서 코드를 작성할 대 메모장으로 대표되는 텍스트 편집 전용 프로그램을 사용해 'HTML 문서'를 만들어야 함</li>
    <li>HTML 문서는 응용 프로그램에 따라 다른 형태로 열린다는 특징이 있음
</li>
</ul>

<p><img src="https://velog.velcdn.com/images/yeojin_ni/post/0331ec3f-0198-4a69-8abc-8c55bf272b42/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[자바스크립트 객체 메서드 모음.JIP]]></title>
            <link>https://velog.io/@yeojin_ni/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EA%B0%9D%EC%B2%B4-%EB%A9%94%EC%84%9C%EB%93%9C-%EB%AA%A8%EC%9D%8C.JIP</link>
            <guid>https://velog.io/@yeojin_ni/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EA%B0%9D%EC%B2%B4-%EB%A9%94%EC%84%9C%EB%93%9C-%EB%AA%A8%EC%9D%8C.JIP</guid>
            <pubDate>Fri, 23 Aug 2024 05:59:04 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/yeojin_ni/post/654ac593-1d74-4102-b861-0c878f1dc8ed/image.png" alt=""></p>
<h1 id="객체">객체</h1>
<blockquote>
<p>자바스크립트는 객체 기반 언어
기능 + 속성</p>
</blockquote>
<h2 id="객체-종류">객체 종류</h2>
<ul>
<li>내장 객체</li>
<li>브라우저 객체 모델 (BOM, Browser Object Model)</li>
<li>문서 객체 모델 (DOM, Document Object Model)</li>
</ul>
<h3 id="날짜-관련-메서드">날짜 관련 메서드</h3>
<table>
  <tr>
    <th>날짜 정보를 가져올 때(GET)</th>
    <th>날짜 정보를 수정할 때(SET)</th>
  </tr>
  <tr>
    <td>getFullYear() - 연도 정보 가져옴</td>
    <td>setFullYear() - 연도 정보 수정</td>
  </tr>
  <tr>
    <td>getMonth() - 월 정보 가져옴 (현재 월 - 1)</td>
    <td>setMonth() - 월 정보만 수정 (월 - 1)</td>
  </tr>
  <tr>
    <td>getDate() - 일 정보 가져옴</td>
    <td>setDate() - 일 정보만 수정</td>
  </tr>
  <tr>
    <td>getDay() - 요일 정보 (일:0 ~ 토:6)</td>
    <td>'요일'은 날짜를 바꾸면 자동으로 바껴서 setDay 없음</td>
  </tr>
  <tr>
    <td>getHours() - 시 정보 가져옴</td>
    <td>setHours() - 시 정보만 수정</td>
  </tr>
  <tr>
    <td>getMinutes() - 분 정보 가져옴</td>
    <td>setMinutes() - 분 정보만 수정</td>
  </tr>
  <tr>
    <td>getSeconds() - 초 정보 가져옴</td>
    <td>setSeconds() - 초 정보만 수정</td>
  </tr>
  <tr>
    <td>getMilliseconds() - 밀리초 정보 가져옴 (1/1000초 단위)</td>
    <td>setMilliseconds() - 밀리초 정보만 수정</td>
  </tr>
  <tr>
    <td>getTime() - 1970년 1월 1일부터 경과된 시간 밀리초 표기</td>
    <td>setTime() - 1970년 1월 1일부터 경과된 시간 밀리초 수정</td>
  </tr>
  <tr>
    <td>toGMTString() - GMT 표준 표기 방식으로 문자형 데이터로 반환</td>
    <td>toLocaleString() - 운영 시스템 표기 방식으로 문자형 데이터로 반환</td>
  </tr>
</table>


<h3 id="수학-메서드-및-상수">수학 메서드 및 상수</h3>
<table>
  <tr>
    <th>종류</th>
    <th>설명</th>
  </tr>
  <tr>
    <td>Math.abs(숫자)</td>
    <td>숫자의 절댓값 반환</td>
  </tr>
  <tr>
    <td>Math.max(숫자1, 숫자2, 숫자3, 숫자4)</td>
    <td>숫자 중 가장 큰 값 반환</td>
  </tr>
  <tr>
    <td>Math.min(숫자1, 숫자2, 숫자3, 숫자4)</td>
    <td>숫자 중 가장 작은 값 반환</td>
  </tr>
  <tr>
    <td>Math.pow(숫자, 제곱값)</td>
    <td>숫자의 거듭제곱값 반환</td>
  </tr>
  <tr>
    <td>Math.random()</td>
    <td>0~1 사이 난수 반환</td>
  </tr>
  <tr>
    <td>Math.round(숫자)</td>
    <td>소숫점 첫째 자리에서 반올림하여 정수 반환</td>
  </tr>
  <tr>
    <td>Math.ceil(숫자)</td>
    <td>소숫점 첫째 자리에서 올림하여 정수 반환</td>
  </tr>
  <tr>
    <td>Math.floor(숫자)</td>
    <td>소숫점 첫째 자리에서 내림하여 정수 반환</td>
  </tr>
  <tr>
    <td>Math.sqrt(숫자)</td>
    <td>숫자의 제곱근 값 반환</td>
  </tr>
  <tr>
    <td>Math.PI</td>
    <td>원주율 상수 반환</td>
  </tr>
</table>

<h4 id="mathrandom-정수-반환하려면">Math.random() 정수 반환하려면</h4>
<blockquote>
<p>Math.floor(Math.random()*(최댓값 - 최솟값 + 1)) + 최솟값;</p>
</blockquote>
<pre><code>Math.floor(Math.random()*11) // 0~10 정수 반환</code></pre><h3 id="배열-객체의-메서드-및-속성">배열 객체의 메서드 및 속성</h3>
<table>
  <tr>
    <th>종류</th>
    <th>설명</th>
  </tr>
  <tr>
    <td>join(연결문자)</td>
    <td>배열 객체의 데이터를 연결 문자 기준으로 1개의 문자형 데이터로 반환</td>
  </tr>
  <tr>
    <td>reverse()</td>
    <td>배열 객체의 데이터 순서를 거꾸로 바꾼 후 반환</td>
  </tr>
  <tr>
    <td>sort()</td>
    <td>배열 객체의 데이터를 오름차순으로 정렬</td>
  </tr>
  <tr>
    <td>slice(index1, index2)</td>
    <td>배열 객체의 데이터 중 원하는 인덱스 구간만큼 잘라서 배열 객체로 가져옴</td>
  </tr>
  <tr>
    <td>splice</td>
    <td>배열 객체의 지정 데이터를 삭제하고 그 구간에 새 데이터 삽입 가능</td>
  </tr>
  <tr>
    <td>concat()</td>
    <td>2개의 배열 객체를 하나로 결합</td>
  </tr>
  <tr>
    <td>pop()</td>
    <td>배열에 저장된 데이터 중 마지막 인덱스에 저장된 데이터 삭제</td>
  </tr>
  <tr>
    <td>push(new data)</td>
    <td>배열 객체의 마지막 인덱스에 새 데이터 삽입</td>
  </tr>
  <tr>
    <td>shift()</td>
    <td>배열 객체에 저장된 데이터 중 첫번째 인덱스에 저장된 데이터 삭제</td>
  </tr>
  <tr>
    <td>unshift(new data)</td>
    <td>배열 객체의 가장 앞 인덱스에 새 데이터 삽입</td>
  </tr>
  <tr>
    <td>length</td>
    <td>배열에 저장된 총 데이터 개수 반환</td>
  </tr>
  <tr>
    <td>forEach</td>
    <td>배열의 각각의 요소에 대한 콜백을 호출</td>
  </tr>
</table>

<h3 id="문자열-객체의-메서드-및-속성">문자열 객체의 메서드 및 속성</h3>
<table>
  <tr>
    <th>종류</th>
    <th>설명</th>  
  </tr>
  <tr>
    <td>charAt(index)</td>
    <td>문자열에서 인덱스 번호에 해당하는 문자 반환</td>
  </tr>
  <tr>
    <td>indexOf("찾을 문자")</td>
    <td>문자열 왼쪽부터 찾을 문자와 일치하는 문자를 찾아 제일 먼저 일치하는 문자 인덱스 번호 반환, 찾는 문자가 없으면 -1 반환</td>
  </tr>
  <tr>
    <td>lastIndexOf("찾을 문자")</td>
    <td>문자열 오른쪽부터 찾을 문자와 일치하는 문자를 찾아 제일 먼저 일치하는 문자 인덱스 번호 반환, 찾는 문자가 없으면 -1 반환</td>
  </tr>
  <tr>
    <td>match("찾을 문자")</td>
    <td>문자열 왼쪽부터 찾을 문자와 일치하는 문자를 찾아 제일 먼저 찾은 문자 반환, 찾는 문자 없으면 null 반환</td>
  </tr>
  <tr>
    <td>replace("바꿀 문자","새 문자")</td>
    <td>문자열 왼쪽부터 바꿀 문자와 일치하는 문자를 찾아 제일 먼저 찾은 문자를 새 문자로 치환</td>
  </tr>
  <tr>
    <td>search("찾을 문자")</td>
    <td>문자열 왼쪽부터 찾을 문자와 일치하는 문자를 찾아 제일 먼저 일치하는 인덱스 번호 반환</td>
  </tr>
  <tr>
    <td>slice(a,b)</td>
    <td>a개의 문자를 자르고 b번째 이후에 문자를 자른 후 남은 문자 반환</td>
  </tr>
  <tr>
    <td>substring(a,b)</td>
    <td>a 인덱스부터 b인덱스 이전 구간의 문자 반환</td>
  </tr>
</table>

<h3 id="window-객체의-매서드-종류">window 객체의 매서드 종류</h3>
<table>
  <tr>
    <th>종류</th>
    <th>설명</th>
  </tr>
  <tr>
    <td>open("URL","새창이름","새창옵션")</td>
    <td>URL페이지를 새창으로 나타냄</td>
  </tr>
  <tr>
    <td>alert(data)</td>
    <td>경고 창을 나타내고 데이터 보여줌. 방문자가 [확인] 버튼 누르면 alert()를 사용한 다음 위치의 코드 수행</td>
  </tr>
  <tr>
    <td>prompt("질문":"답변")</td>
    <td>질문과 답변으로 질의응답 창 나타냄</td>
  </tr>
  <tr>
    <td>confirm("질문 내용")</td>
    <td>질문 내용으로 확인이나 취소창 나타냄. [확인]버튼 누르면 true 반환, [취소]버튼 누르면 false 반환</td>
  </tr>
  <tr>
    <td>moveTo(x, y)</td>
    <td>지정한 새 창의 위치 이동</td>
  </tr>
  <tr>
    <td>resizeTO(width, height)</td>
    <td>지정한 새 창의 크기 변경</td>
  </tr>
  <tr>
    <td>setInterval(function(){코드},일정 시간 간격)</td>
    <td>지속적으로 일정한 시간 간격으로 함수 호출 및 코드 실행</td>
  </tr>
  <tr>
    <td>setTimeout(function(){코드},일정 시간 간격)</td>
    <td>단 한번 일정한 시간 간격으로 함수 호출하여 코드 실행</td>
  </tr>
</table>

<h3 id="elementclasslist">Element.classList</h3>
<blockquote>
<p>classList 속성 - 웹 요소로부터 클래스 콜렉션을 반환하는 속성</p>
</blockquote>
<pre><code>&lt;p class=&quot;hello greet good&gt;안녕하세요&lt;/p&gt;</code></pre><pre><code>// javascript
const p = document.querySelector(&#39;p&#39;)
console.log(p.classList)</code></pre><ul>
<li>결과<pre><code>[&#39;hello&#39;, &#39;greet&#39;, &#39;good&#39;, value: &#39;hello greed good;]
0: &quot;hello&quot;
1: &quot;greet&quot;
2: &quot;good&quot;
length: 3
value: &quot;hello greet good&quot;</code></pre></li>
</ul>
<h4 id="관련-메소드">관련 메소드</h4>
<table align="center">
  <tr>
    <th>메소드</th>
    <th>기능</th>
    <th>사용 예</th>
  </tr>
  <tr>
    <td>add</td>
    <td>지정한 클래스 값 추가</td>
    <td>add("new_class")</td>
  </tr>
  <tr>
    <td>remove</td>
    <td>지정한 클래스 값 제거</td>
    <td>remove("old_class")</td>
  </tr>
  <tr>
    <td>item</td>
    <td>인덱스를 이용해 클래스 값 반환</td>
    <td>item(1)</td>
  </tr>
  <tr>
    <td>toggle</td>
    <td>클래스 값 토글링(on/off)</td>
    <td>toggle("some_value")</td>
  </tr>
  <tr>
    <td>contains</td>
    <td>지정한 클래스 값 존재 여부 확인</td>
    <td>contains("is_contains")</td>
  </tr>
  <tr>
    <td>replace</td>
    <td>기존 클래스를 새 클래스로 대체</td>
    <td>replace("old","new")</td>
  </tr>
</table>]]></description>
        </item>
        <item>
            <title><![CDATA[ORCLE과 MYSQL의 차이]]></title>
            <link>https://velog.io/@yeojin_ni/ORCLE%EA%B3%BC-MYSQL%EC%9D%98-%EC%B0%A8%EC%9D%B4</link>
            <guid>https://velog.io/@yeojin_ni/ORCLE%EA%B3%BC-MYSQL%EC%9D%98-%EC%B0%A8%EC%9D%B4</guid>
            <pubDate>Tue, 20 Aug 2024 07:52:27 GMT</pubDate>
            <description><![CDATA[<h1 id="orcle">ORCLE</h1>
<blockquote>
<p>미국의 오라클 회사에서 제작한 세계 점유율 1위 데이터베이스 관리 시스템이며 현재 유닉스 체제에서 가장 많이 사용되는 DBMS</p>
</blockquote>
<h3 id="장점">장점</h3>
<LI>다른 DB보다 고성능 트랜잭션 처리</LI>
<LI>COST 비용을 최소화 하기위해 테이블과 인덱스 분리</LI>
<LI>Multiple Databases 튜닝이 가능</LI>
<LI>다수의 사용자가 동시에 접근이 가능</LI>
<LI>변경 plan을 작성하고 실제 구현하기 전에 변경사항의 효과를 볼 수 있음</LI>
<LI>생산 시스템을 방해하지 않음</LI>
<LI>오류가 발생하면 설정되어 있는 계정 및 이메일로 연락이 옴</LI>
<LI>경고는 예정된 가종 정지 시간 동안 차단 될 수 있음</LI>
<LI>DBMS 실행 컴퓨터 | 서버 역할 컴퓨터 | DB응용 프로그램 실행 컴퓨터를 다르게 분산처리</LI>

<h3 id="단점">단점</h3>
<LI>비쌈 (COST 문제)</LI>
<LI>기능이 많아서 진입장벽이 높음</LI>
<LI>높은 하드웨어 사양 필요</LI>



<h1 id="mysql">MYSQL</h1>
<blockquote>
<p>전세계적으로 가장 널리 사용되고 있는 오픈 소스 데이터베이스이며, MySQL AB사가 개발하여 배포 및 판매하고 있는 데이터베이스 관리툴</p>
</blockquote>
<h3 id="장점-1">장점</h3>
<LI>오직 1MB의 RAM만 사용할 만큼 용량차지가 매우 적음 -> 매우 적은 오버헤드 사용</LI>
<LI>처리속도가 매우 빠르고 대용량 데이터 처리에 용이</LI>
<LI>다른 데이터 관리 툴에 비해 구조가 간단하여서 사용하기 편함</LI>
<LI>다양한 프로그래밍 언어와 통합할 수 있음</LI>
<LI>거의 모든 운영체제 사용을 지원</LI>
<LI>확장이 가능하고 유연한 구조</LI>
<LI>무료사용 가능 (오픈소스 -> 무료 | 상업용 -> 유료)</LI>

<h3 id="단점-1">단점</h3>
<LI>복잡한 쿼리문은 성능 저하의 원인</LI>
<LI>트랜잭션 지원이 완벽하지 않음</LI>
<LI>용자정의 함수의 사용이 쉽지 않고 유연한 처리가 이루어 지지 않음</LI>


<h2 id="구조적-차이">구조적 차이</h2>
<blockquote>
<p><strong>ORACLE</strong> - DB 서버가 통합된 <strong>하나의 스토리지</strong>를 공유하는 방식
<strong>MYSQL</strong> - DB <strong>서버마다 독립적인</strong> 스토리지를 할당하는 방식</p>
</blockquote>
<h2 id="조인방식의-차이">조인방식의 차이</h2>
<blockquote>
<p><strong>ORACLE</strong> - 중첩 루프 조인, 해시 조인, 소트 머지 조인 방식을 제공
<strong>MYSQL</strong> - 중첩 루프 조인 방식을 제공</p>
</blockquote>
<h2 id="확장성의-차이">확장성의 차이</h2>
<blockquote>
<p><strong>ORACLE</strong> - 별도의 DBMS을 설치해 사용할 수 없음 (<strong>별도 DBMS X</strong>)
<strong>MYSQL</strong> - 별도의 DBMS을 설치해 사용할 수 있음 (<strong>별도 DBMS O</strong>)</p>
</blockquote>
<h2 id="메모리-사용율의-차이">메모리 사용율의 차이</h2>
<blockquote>
<p><strong>ORACLE</strong> - 메모리 사용율이 커서 <strong>최소 수백MB 이상이 되어야 설치 가능</strong>
<strong>MYSQL</strong> - 메모리 사용율이 낮아서 <strong>1MB 환경에서도 설치가 가능</strong></p>
</blockquote>
<h2 id="파티셔닝">파티셔닝</h2>
<blockquote>
<p><strong>ORACLE</strong> - Local Partion Index, Global Partion Index를 지원
<strong>MYSQL</strong> - Local Partion index만 지원</p>
</blockquote>
<h2 id="힌트방식">힌트방식</h2>
<blockquote>
<p><strong>ORACLE</strong> - 힌트에 문법적 오류가 있으면 <strong>힌트를 무시하고 쿼리를 수행</strong>
<strong>MYSQL</strong> - 힌트에 문법적 <strong>오류가 있으면 오류를 발생</strong></p>
</blockquote>
<h2 id="sql구문의-차이">SQL구문의 차이</h2>
<h3 id="null값-확인-함수">NULL값 확인 함수</h3>
<blockquote>
<p><strong>ORACLE</strong> - NVL
<strong>MYSQL</strong> - IFNULL</p>
</blockquote>
<h3 id="현재-날짜-및-시간-확인-함수">현재 날짜 및 시간 확인 함수</h3>
<blockquote>
<p><strong>ORACLE</strong> - SYSDATE
<strong>MYSQL</strong> - DATE()</p>
</blockquote>
<h3 id="날짜-포맷-변환">날짜 포맷 변환</h3>
<blockquote>
<p><strong>Oracle</strong> - TO_CHAR
<strong>MySQL</strong> - DATE_FORMAT</p>
</blockquote>
<h3 id="요일-변환의-숫자-범위">요일 변환의 숫자 범위</h3>
<blockquote>
<p><strong>Oracle</strong> - 일,월,화,수,목,금,토를 1,2,3,4,5,6,7로 인식
<strong>MySQL</strong> - 일,월,화,수,목,금,토를 0, 1,2,3,4,5,6로 인식</p>
</blockquote>
<h3 id="문자와-문자-합치는-방법">문자와 문자 합치는 방법</h3>
<blockquote>
<p><strong>Oracle</strong> - &#39;&#39;
<strong>MySQL</strong> - COMCAT</p>
</blockquote>
<h3 id="형변환-방법">형변환 방법</h3>
<blockquote>
<p><strong>Oracle</strong> - TO_CHAR
<strong>MySQL</strong> - CAST</p>
</blockquote>
<h3 id="페이징-처리">페이징 처리</h3>
<blockquote>
<p><strong>Oracle</strong> - ROWNU BETWEEN 0 AND 10
<strong>MySQL</strong> - LIMIT</p>
</blockquote>
<h3 id="시퀀스-사용시-다음-번호-불러오는-방법">시퀀스 사용시 다음 번호 불러오는 방법</h3>
<blockquote>
<p><strong>Oracle</strong> - 시퀀스명.NEXTVAL
<strong>MySQL</strong> - 시퀀스명.CURRVAL</p>
</blockquote>
]]></description>
        </item>
    </channel>
</rss>