<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>ahn_danna.log</title>
        <link>https://velog.io/</link>
        <description>빨간 머리 개발자</description>
        <lastBuildDate>Wed, 26 Oct 2022 07:32:38 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>ahn_danna.log</title>
            <url>https://velog.velcdn.com/images/ahn_danna/profile/3b5822ea-6a1e-4c9e-8807-f4b7ede45697/image.jpeg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. ahn_danna.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/ahn_danna" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[벤처창업 웹 프로그래밍]]></title>
            <link>https://velog.io/@ahn_danna/%EB%B2%A4%EC%B2%98%EC%B0%BD%EC%97%85-%EC%9B%B9-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D</link>
            <guid>https://velog.io/@ahn_danna/%EB%B2%A4%EC%B2%98%EC%B0%BD%EC%97%85-%EC%9B%B9-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D</guid>
            <pubDate>Wed, 26 Oct 2022 07:32:38 GMT</pubDate>
            <description><![CDATA[<h1 id="경영-정보-기반-기술">경영 정보 기반 기술</h1>
<ul>
<li><p>회사를 경영하며 발생하는 정보를 기반하여 생성된 기술과 규칙,프로세스 등을 말함.</p>
</li>
<li><p>현재 세계 기업 경영은 고객 데이터를 활용한 플랫폼 기업 중심으로 흐름.</p>
</li>
</ul>
<h1 id="비즈니스를-위한-웹-플랫폼-제작을-위한-방법들">비즈니스를 위한 웹 플랫폼 제작을 위한 방법들</h1>
<ol>
<li><h4 id="cms--워드프레스-줌라-등-이미-완성된-시스템을-기반으로-플랫폼을-구축하는-형태"><code>CMS</code> : 워드프레스, 줌라 등 이미 완성된 시스템을 기반으로 플랫폼을 구축하는 형태</h4>
</li>
<li><h4 id="직접-개발--라이브러리-등을-활용하여-기획-설계-구현의-전체-과정을-진행하여-오리지널-시스템을-구축하는-형태"><code>직접 개발</code> : 라이브러리 등을 활용하여 기획, 설계, 구현의 전체 과정을 진행하여 오리지널 시스템을 구축하는 형태</h4>
</li>
<li><h4 id="프레임워크를-통한-개발--기획-설계-구현의-전체-과정을-진행하지만-이미-구비된-프레임워크를-통해-빠르게-구축하며-인적자원을-시스템화할-수-있도록-되어있는-형태-대부분의-기업체-기관들이-많이-사용"><code>프레임워크를 통한 개발</code> : 기획, 설계, 구현의 전체 과정을 진행하지만 이미 구비된 프레임워크를 통해 빠르게 구축하며, 인적자원을 시스템화할 수 있도록 되어있는 형태. 대부분의 기업체, 기관들이 많이 사용.</h4>
</li>
</ol>
<h1 id="린-스타트업-이론-기초">린 스타트업 이론 기초</h1>
<ul>
<li><h3 id="린-경영의-3대-원칙--리서치-중심--고객--중심--학문적-접근"><code>린 경영의 3대 원칙</code> : 리서치 중심 / 고객  중심 / 학문적 접근</h3>
<blockquote>
<ol>
<li>최초의 사업계획, 즉 플랜A를 문서화하라<ol start="2">
<li>사업계획에서 가장 위험한 부분을 식별하라</li>
<li>사업계획을 체계적으로 검증하라</li>
</ol>
</li>
</ol>
</blockquote>
</li>
</ul>
<h1 id="린-캔버스">린 캔버스</h1>
<h3 id="1-문제">1. 문제</h3>
<ul>
<li>가치, 솔루션, 핵심지표의 시작 지점.</li>
<li>고객군이 해결해야 할 1~3가지 핵심 문제 정리.</li>
<li>고객 관점에서 생각하기.</li>
<li>기존 대안들 나열. =&gt; 해당 문제를 고객들은 어떻게 처리하는지 알아야 함. =&gt; 새로운 서비스의 방향 잡기.</li>
<li>가능성 있는 얼리어답터를 타겟팅.</li>
</ul>
<h3 id="2-고객군">2. 고객군</h3>
<ul>
<li>목표 고객군 별 특징을 구체적으로 설정</li>
</ul>
<h3 id="3-가치">3. 가치</h3>
<ul>
<li><code>UVP (Unique Value Proposition)</code>는 제품이 가진 차별점은 무엇이며, 구입할 가치가 있는 이유를 의미.</li>
<li>핵심가치는 홍보용 랜딩페이지의 헤드라인에 포함될 몇 개의 단어로 정리해야 함.</li>
<li>어차피 스타트업이 만든 제품은 시장에 처음 나온 것이므로 얼리어답터를 타겟해야 함.</li>
<li><code>고유의 가치 제안</code><ol>
<li>차별화하라, 그리고 차별화 포인트가 중요한지 확인하라</li>
<li>얼리어답터를 목표로 삼아라</li>
<li>제품을 사용했을 때의 혜택에 집중하라 (권위 x, 고객 중심)</li>
<li>단어를 주의 깊게 선택하라 (키워드 잡기)</li>
<li>&#39;무엇, 누구, 왜&#39;에 답하라</li>
<li>다른 훌륭한 uvp들을 연구하라</li>
<li>호소력 있는 선전문구를 만들어라</li>
</ol>
</li>
</ul>
<h3 id="4-솔루션">4. 솔루션</h3>
<ul>
<li>해당 문제에 대한 자신만의 해결방식</li>
<li>다른 요소들의 완성 이후에 솔루션에 대해 언급할 것</li>
<li><code>고객의 상황과 생각에 관계 없이 제안하려는 것</code> =&gt; <code>solution</code>이 아닌 <code>problem</code>으로 인식될 수 있음</li>
</ul>
<h1 id="전략-캔버스-작성">전략 캔버스 작성</h1>
<h3 id="인바운드-채널">인바운드 채널</h3>
<ul>
<li><code>인바운드 채널</code> : 블로그 (기업 블로그, 기술 블로그), 검색엔진최적화 (SEO), 전자책, 백서, 웹세미나 (=웨비나)<h3 id="아웃바운드-채널">아웃바운드 채널</h3>
</li>
<li><code>아웃바운드 채널</code> : 검색엔진마케팅 (키워드 광고, 브랜드 검색 광고), 인쇄물/TV 광고, 전시회/박람회, 판촉전화 (콜드콜) =&gt; 인스타포스팅처럼 차세대 디지털 인쇄물 (soft copy) 등 등장</li>
</ul>
<h1 id="직접-판매와-자동화된-판매">직접 판매와 자동화된 판매</h1>
<ul>
<li>초반에 스타트업은 데이터를 확보하기 위해 <code>직접 판매</code>를 통해 학습해야 함</li>
<li>이후 IT 플랫폼, 검색 엔진 플랫폼과 협업하여 판매 자동화 고려</li>
<li>창업 초기, 패시브 인컴을 통한 유입 현금 흐름 -&gt; 기초적인 자본 압박에서 자유롭게 함</li>
</ul>
<h1 id="린-캔버스-안에서의-위험도-이해">린 캔버스 안에서의 위험도 이해</h1>
<ol>
<li><code>제품 위험 (p)</code> : 제대로 된 제품을 만드는 것</li>
</ol>
<ul>
<li>문제, 솔루션, 가치 제안, 핵심지표 요소와 연관</li>
</ul>
<ol start="2">
<li><code>고객 위험 (c)</code> : 고객에게 도달하는 경로를 구축하는 것</li>
</ol>
<ul>
<li>채널, 고객군 요소와 연관</li>
</ul>
<ol start="3">
<li><code>시장 위험 (m)</code> : 존속할 수 있는 사업을 구축하는 것</li>
</ol>
<ul>
<li>경쟁우위, 비용구조, 수익원 요소와 연관</li>
</ul>
<h1 id="사업-모델-순위의-가중치-순서">사업 모델 순위의 가중치 순서</h1>
<ol>
<li>고객 불편 수준 (문제) : 제품이 가장 필요할 것으로 생각하는 고객순 나열.</li>
<li>접근 용이성 (채널) </li>
<li>가격/수익 (수익원 / 비용 구조) : 수익을 극대화할 수 있는 고객군.</li>
<li>시장 규모 (고객군) : 시장 규모가 충분히 큰 고객군.</li>
<li>실현 가능성 (솔루션) : 구현 가능성, 고객에게 제공할 최소 기능 포함 여부 확인.</li>
</ol>
<h1 id="고객-인터뷰">고객 인터뷰</h1>
<p><code>초기엔 설문 조사나 포커스 그룹 인터뷰가 아닌, 시장 최전선에서 고객 인터뷰를 진행할 것.</code></p>
<ul>
<li>설문 조사는 물어야 할 질문을 이미 안다고 가정. but 최초 기획에서는 상상도 못한 대답을 하는 경우가 많음.</li>
<li>최고의 초기 학습은 개방형 질문에서 얻을 수 있음.<h3 id="중요-포인트">중요 포인트</h3>
</li>
</ul>
<ol>
<li>제품 설명이 아닌 학습을 중심으로 대화의 틀을 잡음.</li>
</ol>
<ul>
<li>고객을 학습/연구 대상으로 삼아 빠르게 변화하는 시장 needs와 wants의 흐름을 파악.</li>
</ul>
<ol start="2">
<li>고객에게 무엇을 원하는지 묻지 말고 행동만을 살펴 볼 것.</li>
</ol>
<ul>
<li>환불을 보증하고, 제품 선지불이나 부분 지불을 권해볼 것.</li>
<li>환불보증부로 서비스를 진행하면, 초기 현금 흐름에도 도움을 줌.</li>
<li>이를 통한 3개월 이상의 매출 트래픽 -&gt; 신용보증재단 등에서 저리 사업자 대출도 가능.</li>
</ul>
<ol start="3">
<li>다양한 가망 고객을 만나는 것이 좋음.</li>
</ol>
<ul>
<li>가능하면 대면 인터뷰.</li>
<li>아는 사람부터 시작하여 가지치기.</li>
<li>인터뷰 참가비는 X</li>
<li>인터뷰에 다른 사람과 동반 (객관성 확보, 시간 관리)</li>
<li>인터뷰 직후 결과를 문서화할 것.</li>
<li>인터뷰 일정 관리를 위해서 오후 시간을 비우거나 이메일로 인터뷰 요청을 위한 문장으 미리 만들어 놓음.</li>
</ul>
<h1 id="프로그램-개발의-프로세스">프로그램 개발의 프로세스</h1>
<p><img src="https://velog.velcdn.com/images/ahn_danna/post/2a239442-beeb-4066-9e42-87f8a5fb18fe/image.png" alt=""></p>
<h4 id="유즈-케이스-작성">유즈 케이스 작성</h4>
<ul>
<li>고객의 요구사항 분석을 통해 유즈 케이스를 추출해내고 이것을 소프트웨어 설계에 활용.</li>
<li>시나리오를 작성해서 필요한 기능을 뽑아 냄.</li>
</ul>
<hr>
<h1 id="서버-기반-언어-기초--플랫폼-개발-언어에-대한-이해">서버 기반 언어 기초 : 플랫폼 개발 언어에 대한 이해</h1>
<ul>
<li><p>컴퓨터는 <code>클라이언트(서비스를 받음)</code>와 <code>서버(서비스를 줌)</code>로 나뉨.</p>
</li>
<li><p>웹 프로그래밍은 데이터를 입력받고 고객을 접하는 <code>프론트 엔드</code>와 데이터를 처리하고 저장하며 기능을 처리하는 <code>백 엔드</code>로 구분.</p>
</li>
</ul>
<h1 id="php">php</h1>
<ul>
<li><p><code>hypertext processor PHP</code></p>
</li>
<li><p>동적 웹 페이지를 만들기 위해 설계되었으며, 이를 구현하기 위해 php로 작성된 코드를 html 소스 문서 안에 넣으면 php 처리 기능이 있는 웹 서버에서 해당 코드를 인식하여 작성자가 원하는 웹 페이지를 생성.</p>
</li>
<li><p><code>동적 웹 페이지</code> : 데이터에 의해 플랫폼의 특정 영역 내용이 지속적으로 변경되는 웹 페이지를 의미.</p>
</li>
</ul>
<h1 id="php-모듈-개발과-관련된-개념-요소들">php 모듈 개발과 관련된 개념 요소들</h1>
<ul>
<li>데이터 (리터럴)</li>
<li>변수 (일반변수 [지역 변수, 글로벌 변수], 세션 변수)</li>
<li>상수</li>
<li>배열 / 연관 배열</li>
<li>함수 / 사용자 정의 함수</li>
<li>클래스와 객체</li>
</ul>
<h2 id="1-리터럴-데이터">1. 리터럴 (데이터)</h2>
<ul>
<li><code>문자 리터럴</code> / <code>숫자 리터럴</code></li>
<li><code>문자 리터럴</code> : 문자 데이터를 다루며 연산 기능은 없음.</li>
<li><code>숫자 리터럴</code> : 4칙 연산, 논리 연산 등 다양한 연산 기능은 없음.</li>
<li>리터럴은 변수에 저장할 수 있음.</li>
</ul>
<h2 id="2-변수">2. 변수</h2>
<ul>
<li><code>변수</code> : 데이터를 저장하기 위해 개발자와 언어엔진에 의해 이름을 할당 받은 메모리 공간을 의미.</li>
<li>변수는 새로운 값에 의해 기존 데이터를 overwrite 가능.</li>
<li><code>지역 변수</code>는 반복문 등의 안쪽에서 선언, 반복문 종료시 사라짐.</li>
<li><pre><code>$변수명

</code></pre></li>
</ul>
<h2 id="3-세션-변수">3. 세션 변수</h2>
<ul>
<li><p><code>세션</code>은 모든 정보가 사용자 측의 컴퓨터에 저장되는 <code>쿠키와</code> 달리 웹 서버에 정보를 저장하고 사용자 측에는 접근할 수 있는 <code>키 값</code>을 저장한다.</p>
</li>
<li><p>과거에는 <code>쿠키</code> 때문에 해킹 당하는 경우가 있었으며, <code>세션</code>은 서버네 저장하기에 비용 증가로 잘 안 썼음. 지금은 클라우드 등 자원들의 비용이 저렴해져서 주로 <code>세션</code>만 사용.</p>
</li>
<li><p>웹 서버에 데이터가 저장되고 필요할 때마다 브라우저에서 <code>키 값</code>으로 서버에 요청. 브라우저를 종료하는 시점에서 <code>세션</code>이 삭제가 되도록 설정 가능.</p>
</li>
<li><p>``` 
session_start() 함수로 시작 </p>
</li>
<li><p><code>세션 변수</code>는 페이지 간 이동을 해도 변수 값이 사라지지 않음.</p>
</li>
</ul>
<h2 id="4-상수">4. 상수</h2>
<ul>
<li>변하지 않는 고정값.</li>
<li><pre><code>define(&quot;X&quot;, &quot;Hello World!&quot;);

</code></pre></li>
</ul>
<h2 id="5-배열">5. 배열</h2>
<ul>
<li><code>배열</code> : map으로 이루어진 순서가 있는 집합. map은 한 쌍의 <code>key</code>, <code>value</code>로 이루어짐.</li>
<li>```
$arr[0] = &quot;apple&quot;; $arr[1] = &quot;banana&quot;;</li>
<li><pre><code>$arr = array(&quot;apple&quot;, &quot;banana&quot;);
</code></pre></li>
</ul>
<h2 id="6-연관-배열">6. 연관 배열</h2>
<ul>
<li>숫자뿐만 아니라 문자열까지도 배열 요소의 인덱스로 사용할 수 있음.</li>
<li>만약, 정수와 문자열 외의 다른 타입의 값을 키 값으로 사용하면, 내부적으로 정수와 문자열로 타입 변환이 이루어짐.</li>
<li>```
$arr[&quot;banana&quot;] = 2000; </li>
<li><pre><code>$arr = array(&quot;apple&quot; =&gt; 1000, &quot;banana&quot; =&gt; 2000);
</code></pre></li>
</ul>
<h2 id="7-클래스와-객체">7. 클래스와 객체</h2>
<ul>
<li>객체에 대한 설계도<ul>
<li>객체 : 런타임 위에서 작동되는 기능 + 저장 능력 </li>
</ul>
</li>
<li>클래스 이름은 PSR에 따라 대문자로 시작하고, 단어 간의 연결마다 대문자를 사용하는 <code>StudlyCaps</code> 형식을 따름. (= Pascal Case)</li>
<li>클래스는 object를 중심으로 특정 역할을 하는 타입을 말함.</li>
<li>내부적으로는 <code>멤버변수</code>와 <code>메소드</code>를 가질 수 있음. </li>
<li>클래스 타입의 변수를 <code>인스턴스</code>라고 부름.</li>
<li><code>멤버 변수</code> = <code>속성</code> = <code>프로퍼티</code></li>
<li><code>메소드</code> = 클래스 안에서 정의된 함수</li>
</ul>
<h4 id="상속과-트레이트">상속과 트레이트</h4>
<ul>
<li><code>상속</code> : 이미 만들어져 있는 상위의 클래스로부터 코드를 물려받는 것을 의미
  -&gt; <code>자식 클래스명 extends 부모 클래스명</code></li>
<li><code>트레이트</code> : 인터페이스와 같은 기능. 수직 상속은 하나만 가능하므로, 수평 상속을 통해 코드 재사용성 극대화.
  -&gt; <code>trait SayMorning{;}</code><pre><code> -&gt; `Class Guest extends User{</code></pre>  use SayMorning;}`<h4 id="접근-제한자">접근 제한자</h4>
  1) public : 모든 접근 허용
  2) protected : 같은 폴더에 있는 객체와 상속관계의 객체들만 허용
  3) private : 현재 객체 내에서만 허용</li>
</ul>
<h1 id="php-내장-함수">php 내장 함수</h1>
<ul>
<li><p>컴퓨터 언어는 설치시 자동으로 설치되는 <code>내장함수</code>와 추가적인 설치를 해야 하는 <code>외장함수</code>가 있음.</p>
</li>
<li><p>보통 외장함수의 경우 <code>라이브러리</code>라고 호칭함.</p>
</li>
<li><pre><code>explode() =&gt; split() 메서드 in python
$string = &quot;사과,귤,감,밤&quot;;
$array = explode(&#39;,&#39;,$string);</code></pre></li>
<li><pre><code>implode() =&gt; join() 메서드 in python

</code></pre></li>
</ul>
<ul>
<li><pre><code>print_r() =&gt; 배열 구조 출력</code></pre></li>
<li><pre><code>require() =&gt; 외장 데이터 사용 가능</code></pre></li>
<li><pre><code>checkdate() =&gt; 날짜가 유효한 양력 날짜인지 판단</code></pre></li>
<li><pre><code>nl2br() =&gt; enter를 br 태그로 자동 변환</code></pre></li>
<li><pre><code>id_dir() =&gt; 해당 디렉토리가 존재하는지 알려주는 정보 함수</code></pre></li>
<li><pre><code>mkdir() =&gt; 디렉토리를 만들어주는 함수</code></pre></li>
<li><pre><code>header() =&gt; 브라우저의 주소창 로케이션 내용을 설정</code></pre></li>
<li><pre><code>isset($_POST[&quot;name&quot;]) =&gt; name에 데이터가 존재하면 true



</code></pre></li>
</ul>
<h1 id="사용자-정의-함수">사용자 정의 함수</h1>
<ul>
<li><pre><code>function print_copyright() {
print &quot;&lt;FONT size = 2&gt;&quot;;
print &quot;Copyright 2022 Danha All rights reserved.&quot;;
print &quot;&lt;/FONT&gt;&quot;;}
</code></pre></li>
</ul>
<h1 id="데이터-전달-과정">데이터 전달 과정</h1>
<p>1) <code>post</code></p>
<ul>
<li>페이지 단위로 큰 데이터 전달할 때 사용.</li>
</ul>
<p>2) <code>get</code></p>
<ul>
<li>url을 활용해서 데이터 전달.</li>
<li>검색 엔진이나 저장된 데이터베이스에서 원하는 데이터를 찾고자 할 때 사용.</li>
<li>데이터 전달에 제한이 있음.</li>
<li>보안 취약.</li>
</ul>
<h1 id="관계형-데이터베이스의-특징">관계형 데이터베이스의 특징</h1>
<ul>
<li>DB를 구성하는 <code>개체(entity)</code>나 <code>관계(relationship)</code> 모두를 <code>relation</code>이라는 표로 표현.</li>
<li><code>장점</code> : 간결하고 보기 편리함. 다른 DB로 변환이 용이. 대부분의 메이저 데이터베이스 제품군이 관계형 데이터베이스.</li>
<li><code>단점</code> : 성능이 다소 떨어짐.</li>
</ul>
<h1 id="데이터베이스-테이블-구성-요소">데이터베이스 테이블 구성 요소</h1>
<h3 id="1-기본키">1) 기본키</h3>
<ul>
<li>후보키 중에서 선택한 주키 (main key)</li>
<li>모든 사용자가 unique하게 가지고 있는 속성</li>
<li>null 값을 가질 수 없음.</li>
<li><code>외래키</code> : 다른 릴레이견의 기본키를 참조하는 속성. 외래키를 통해 테이블 간 연결이 가능.</li>
</ul>
<h3 id="2-테이블릴레이션--개체">2) 테이블(릴레이션) = 개체</h3>
<h3 id="3-열--속성">3) 열 = 속성</h3>
<ul>
<li>데이터베이스를 구성하는 가장 작은 논리적 단위.</li>
<li>파일 구조 상의 데이터 항목 또는 데이터 필드에 해당.</li>
<li>변수에 비유 가능</li>
</ul>
<h3 id="4-행--튜플--레코드">4) 행 = 튜플 = 레코드</h3>
<ul>
<li>한 사람의 데이터는 행 단위로 저장되므로 하나의 데이터는 결국 튜플.</li>
<li>속성의 모임으로 구성. 여러 셀이 모여 튜플을 구성.</li>
</ul>
<h1 id="php-범용-db-접속-개체-pdo">PHP 범용 DB 접속 개체 PDO</h1>
<p> <code>PDO (PHP Data Object) : 여러 데이터베이스를 제어하는 방법을 표준화한 것</code></p>
<ul>
<li><p>DB 종류에 따라 다른 드라이브, 드라이브 종류에 따라 다른 API를 사용했지만 PDO로는 같은 방법으로 범용 가능</p>
</li>
<li><p>MySQLi는 MySQL DB에서만 작동.</p>
</li>
<li><p>PDO도 MySQLi와 마찬가지로 <code>Prepared Statement</code> 지원.
   <code>Prepared Statement</code> : 자주 사용되는 SQL을 DB가 이해하기 쉬운 형태로 해석해놓은 것. 일종의 템플릿 형식. 효율성 면에서 좋고, <code>SQLInjection</code>에 강함.</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[컴퓨팅 핵심 - string]]></title>
            <link>https://velog.io/@ahn_danna/%EC%BB%B4%ED%93%A8%ED%8C%85-%ED%95%B5%EC%8B%AC-string</link>
            <guid>https://velog.io/@ahn_danna/%EC%BB%B4%ED%93%A8%ED%8C%85-%ED%95%B5%EC%8B%AC-string</guid>
            <pubDate>Mon, 24 Oct 2022 20:59:51 GMT</pubDate>
            <description><![CDATA[<h1 id="old-style-string-formating">Old Style String Formating</h1>
<ul>
<li>%s : string</li>
<li>%c : a single character</li>
<li>%d : integer</li>
<li>%f : floating - point<h1 id="new-style-string-formating">New Style String Formating</h1>
<h3 id="strformat">str.format()</h3>
</li>
<li><code>&gt;</code> : 오른쪽 정렬</li>
<li><code>&lt;</code> : 왼쪽 정렬</li>
<li><code>^</code> : 가운데 정렬<pre><code>print(&quot;He paid {0:&gt;10} dollars.&quot;.format(10)) 
print(&quot;He paid {0:&gt;10} dollars.&quot;.format(100)) 
print(&quot;He paid {0:&gt;10} dollars.&quot;.format(1000)) 
print(&quot;He paid {0:&gt;10} dollars.&quot;.format(10000))
</code></pre></li>
</ul>
<hr>
<p>He paid         10 dollars.
He paid        100 dollars.
He paid       1000 dollars.
He paid      10000 dollars.</p>
<pre><code>
- 기호 삽입</code></pre><p>print(&quot;He paid {0:.&lt;10} dollars.&quot;.format(10)) 
print(&quot;He paid {0:.&lt;10} dollars.&quot;.format(100)) 
print(&quot;He paid {0:.&lt;10} dollars.&quot;.format(1000)) 
print(&quot;He paid {0:.&lt;10} dollars.&quot;.format(10000))</p>
<pre><code>- 소수점 자릿수 
   - 정수 표현 : 0Nd
   - 소수 표현 : 0.Nf
   --&gt; 자릿수 모자르면 0으로 채움
</code></pre><p>print(&quot;He paid {0:0.2f} dollars.&quot;.format(math.pi))
print(&quot;He paid {0:0.3f} dollars.&quot;.format(math.pi))
print(&quot;He paid {0:0.4f} dollars.&quot;.format(math.pi))
print(&quot;He paid {0:0.5f} dollars.&quot;.format(math.pi))</p>
<pre><code>
# String Interpolation (f-string)</code></pre><p>table = {&#39;Sjoerd&#39;: 4127, &#39;Jack&#39;: 4098, &#39;Dcab&#39;: 7678}
for name, phone in table.items():
  print(f&#39;{name:10} ==&gt; {phone:10d}&#39;)</p>
<hr>
<p>Sjoerd     ==&gt;       4127
Jack       ==&gt;       4098
Dcab       ==&gt;     117678</p>
<pre><code># String Functions
- find() : 위치 반환, 없으면 -1
- index() : 위치 반환, 없으면 error</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[컴퓨팅 핵심 - Function]]></title>
            <link>https://velog.io/@ahn_danna/%EC%BB%B4%ED%93%A8%ED%8C%85-%ED%95%B5%EC%8B%AC-Function</link>
            <guid>https://velog.io/@ahn_danna/%EC%BB%B4%ED%93%A8%ED%8C%85-%ED%95%B5%EC%8B%AC-Function</guid>
            <pubDate>Mon, 24 Oct 2022 20:19:10 GMT</pubDate>
            <description><![CDATA[<h1 id="function">Function</h1>
<ul>
<li>코드의 간결성</li>
<li>코드의 재사용성</li>
<li>코드 수정의 용이성</li>
<li>프로그램의 모듈화</li>
</ul>
<h2 id="내장함수-vs-사용자-정의-함수">내장함수 Vs. 사용자 정의 함수</h2>
<ul>
<li>내장함수 : 자주 사용하는 기능을 미리 만들어 내장시킨 함수 </li>
<li>사용자 정의 함수 : 프로그래머가 필요에 의해 만든 함수<h2 id="arbitary-arguments-args">Arbitary Arguments, *args</h2>
</li>
<li>arguments의 개수를 모를 때 <code>*</code>를 붙임 -&gt; <code>tuple로 받음</code><h2 id="arbitary-keyword-arguments-kwargs">Arbitary Keyword Arguments, **kwargs</h2>
</li>
<li>arguments가 많은데 그 즁 몇 가지 값만 변경하여 전달할 때 사용 -&gt; <code>dic으로 받음</code></li>
</ul>
<h2 id="variable-scope">Variable Scope</h2>
<ul>
<li>지역변수<ul>
<li>함수 내부에서만 유효한 변수</li>
<li>함수가 호출되었을 때 생성, 벗어날 때 사라짐</li>
</ul>
</li>
<li>전역변수<ul>
<li>전체에서 유효</li>
<li>프로그램이 시작될 때 생성, 끝날 때 사라짐</li>
</ul>
</li>
</ul>
<h2 id="전역-변수의-값을-함수-안에서-사용하는-방법">전역 변수의 값을 함수 안에서 사용하는 방법</h2>
<p>1) <code>global</code> 키워드 사용
2) 매개변수 전달</p>
<h2 id="high-order-function-고차함수">High Order Function (고차함수)</h2>
<ul>
<li>함수를 다루는 함수</li>
<li>함수를 인자로 받거나 함수를 반환하는 함수</li>
<li>고계 함수는 <code>lambda()</code> 함수와 주로 사용</li>
<li><code>map</code>, <code>reduce</code>, <code>filter</code></li>
<li><code>맵리듀스(map-reduce) 알고리즘</code> : 대용량 분산처리 시스템에서 각각의 work를 쪼개서 여러 시스템에 나눠 주고 (map) 다시 그 결과를 합쳐서 (reduce) 반환해주는 알고리즘<h3 id="reduce">reduce()</h3>
</li>
<li>반드시 두 개의 전달 인자가 있어야 함<pre><code>from functools import reduce
reduce(lambda x, y: x+y, {2: &#39;안녕&#39;, 4: &#39;하세요&#39;})
# 6</code></pre></li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[컴퓨팅 핵심 - Container Data Type]]></title>
            <link>https://velog.io/@ahn_danna/%EC%BB%B4%ED%93%A8%ED%8C%85-%ED%95%B5%EC%8B%AC-Container-Data-Type</link>
            <guid>https://velog.io/@ahn_danna/%EC%BB%B4%ED%93%A8%ED%8C%85-%ED%95%B5%EC%8B%AC-Container-Data-Type</guid>
            <pubDate>Mon, 24 Oct 2022 19:03:43 GMT</pubDate>
            <description><![CDATA[<h1 id="immutable-vs-mutable">Immutable Vs. Mutable</h1>
<ul>
<li><code>range</code>, <code>tuple</code> : <code>immutable</code><ul>
<li>객체가 만들어지면 값 변경 불가</li>
</ul>
</li>
<li><code>list</code>, <code>set</code>, <code>dict</code> : <code>mutable</code><ul>
<li>객체가 만들어진 이후에도 값 추가, 삭제, 수정 가능<h3 id="객체">객체</h3>
</li>
</ul>
</li>
<li>데이터와 그 데이터에 관련된 동작(절차, 방법, 기능)을 모두 포함한 개념</li>
<li>python에서 모든 것이 객체<h1 id="list">List</h1>
</li>
<li>다수의 데이터, 타입이 다른 데이터를 하나의 변수에 저장하고자 할 때 매우 유용<h3 id="indexing-and-slicing">Indexing and Slicing</h3>
</li>
<li>변수 [시작 : 끝 : 증감] -&gt; 범위 끝 미포함<h3 id="아이템-추가">아이템 추가</h3>
```</li>
<li>list.append(item)</li>
<li>list.extend(list2)</li>
<li>list.insert(index, item)<pre><code>### 아이템 제거</code></pre></li>
<li>del list[index]</li>
<li>list.remove(item) : list에서 첫 번째로 나오는 item 삭제<pre><code>### 아이템 정렬</code></pre></li>
<li>list.sort()</li>
<li>sorted(list)</li>
<li>list.reverse<pre><code>### list 연산자</code></pre></li>
<li>list + list</li>
<li>list * 숫자 (0이나 음수일 경우 빈 리스트 반환)</li>
<li>우선 순위 : * &gt; +<pre><code>### 문자열을 list로 생성</code></pre></li>
<li>list() : 인자로 문자열이 아닌 다른 자료형이 들어갈 수 있음</li>
<li>split() : 인자를 기준으로 나눠 list 형성<pre><code>### range() 함수로 list 생성</code></pre></li>
<li>arr = list(range(숫자))
```<h1 id="tuple">tuple</h1>
</li>
<li>리스트와 같이 순서가 있는 아이템들의 묶음</li>
<li>리스트와 동일하지만, 튜플은 <code>immutable</code></li>
<li>리스트에서 사용하는 <code>연산</code>, <code>인덱싱</code>, <code>슬라이싱</code> 등 모두 동일하게 사용 가능
```</li>
<li>t1 = ()</li>
<li>t2 = 1, 2, 3</li>
<li>t3 = (1, )</li>
<li>t4 = t1 + t2</li>
<li>t5 = t1 * 3
```<h1 id="dictionary">dictionary</h1>
</li>
<li><code>key - value</code> 쌍으로 이루어진 자료구조</li>
<li><code>value</code>에는 다양한 자료형이 들어갈 수 있음</li>
<li><code>key</code>에는 <code>immutable type</code>만 들어갈 수 있음<h3 id="key-search">Key Search</h3>
```</li>
<li>dic[key] # key가 없으면 error</li>
<li>dic.get(key) # key가 없으면 error<pre><code>### Iteration</code></pre></li>
<li>dic.keys() # list로 반환</li>
<li>dic.items() # tuple로 반환<pre><code></code></pre></li>
</ul>
<h1 id="set">Set</h1>
<ul>
<li>Add</li>
<li>Update : 여러 값 동시에</li>
<li>Remove<h3 id="set-operators-and-methods">Set Operators and Methods</h3>
```</li>
<li>s1 &amp; s2 / s1.intersection(s2)</li>
<li>s1 | s2 / s1.union(s2)</li>
<li>s1 - s2 / s1.difference(s2)
```</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[컴퓨팅 핵심 - 조건문, 반복문]]></title>
            <link>https://velog.io/@ahn_danna/%EC%BB%B4%ED%93%A8%ED%8C%85-%ED%95%B5%EC%8B%AC-%EC%A1%B0%EA%B1%B4%EB%AC%B8-%EB%B0%98%EB%B3%B5%EB%AC%B8</link>
            <guid>https://velog.io/@ahn_danna/%EC%BB%B4%ED%93%A8%ED%8C%85-%ED%95%B5%EC%8B%AC-%EC%A1%B0%EA%B1%B4%EB%AC%B8-%EB%B0%98%EB%B3%B5%EB%AC%B8</guid>
            <pubDate>Mon, 24 Oct 2022 18:45:52 GMT</pubDate>
            <description><![CDATA[<h1 id="논리-연산자">논리 연산자</h1>
<ul>
<li>not &gt; and &gt; or 순으로 우선순위가 높음<h1 id="프로그래밍-제어-구조">프로그래밍 제어 구조</h1>
<h3 id="순차-구조">순차 구조</h3>
<h3 id="조건-구조">조건 구조</h3>
<h3 id="반복-구조">반복 구조</h3>
</li>
</ul>
<h1 id="반복문">반복문</h1>
<h3 id="while-true-break">while True, break</h3>
<ul>
<li>break가 있어야 while True 구문 빠져나올 수 있음</li>
<li>프로그래밍 언어에서 0 이외 모든 값은 True<h3 id="continue">continue</h3>
</li>
<li>continue를 만나게 되면 아래코드로 넘어가지 않고 다시 while 조건식으로 분기</li>
</ul>
<h3 id="for-문">for 문</h3>
<ul>
<li>for 변수 in 범위<ul>
<li>범위에는 리스트, 튜플, 문자열 등이 들어갈 수 있음</li>
<li>반복에 필요한 변수를 미리 만들 필요 없음<h3 id="list-comprehension">List Comprehension</h3>
<pre><code>x = [3 * i for i in range(1, 11) if i % 2 == 0]</code></pre></li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[컴퓨팅 핵심 - 입출력과 타입 변환]]></title>
            <link>https://velog.io/@ahn_danna/%EC%BB%B4%ED%93%A8%ED%8C%85-%ED%95%B5%EC%8B%AC-%EC%9E%85%EC%B6%9C%EB%A0%A5%EA%B3%BC-%ED%83%80%EC%9E%85-%EB%B3%80%ED%99%98</link>
            <guid>https://velog.io/@ahn_danna/%EC%BB%B4%ED%93%A8%ED%8C%85-%ED%95%B5%EC%8B%AC-%EC%9E%85%EC%B6%9C%EB%A0%A5%EA%B3%BC-%ED%83%80%EC%9E%85-%EB%B3%80%ED%99%98</guid>
            <pubDate>Mon, 24 Oct 2022 18:28:46 GMT</pubDate>
            <description><![CDATA[<h1 id="print">print()</h1>
<ul>
<li>end, sep, file<h3 id="print123-file--openfiletxt-w">print(1,2,3, file = open(&#39;file.txt&#39;, &#39;w&#39;))&#39;</h3>
</li>
<li>open() 함수로 객체 형성</li>
<li>file.txt에 출력 결과 저장</li>
</ul>
<h1 id="data-type-변환-함수">Data Type 변환 함수</h1>
<h3 id="숫자형">숫자형</h3>
<ul>
<li>int</li>
<li>float</li>
<li>complex (복소수)</li>
<li>bool (불리언, 논리 자료형)<h3 id="문자형">문자형</h3>
</li>
<li>str</li>
<li>bytearray</li>
<li>bytes<h3 id="컨테이너형">컨테이너형</h3>
</li>
<li>range</li>
<li>tuple</li>
<li>list</li>
<li>set</li>
<li>dict</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[컴퓨팅 핵심 - 순차적 계산, 변수, 값, 타입 이해]]></title>
            <link>https://velog.io/@ahn_danna/%EC%BB%B4%ED%93%A8%ED%8C%85-%ED%95%B5%EC%8B%AC-%EC%88%9C%EC%B0%A8%EC%A0%81-%EA%B3%84%EC%82%B0-%EB%B3%80%EC%88%98-%EA%B0%92-%ED%83%80%EC%9E%85-%EC%9D%B4%ED%95%B4</link>
            <guid>https://velog.io/@ahn_danna/%EC%BB%B4%ED%93%A8%ED%8C%85-%ED%95%B5%EC%8B%AC-%EC%88%9C%EC%B0%A8%EC%A0%81-%EA%B3%84%EC%82%B0-%EB%B3%80%EC%88%98-%EA%B0%92-%ED%83%80%EC%9E%85-%EC%9D%B4%ED%95%B4</guid>
            <pubDate>Mon, 24 Oct 2022 18:05:12 GMT</pubDate>
            <description><![CDATA[<h1 id="numeric-operators">Numeric Operators</h1>
<h3 id="수식-표현">수식 표현</h3>
<ul>
<li>값과 연산자로 이루어짐</li>
<li>연산자의 종류<ul>
<li>산술 : +, -, *, /, //<ul>
<li>대입 : =</li>
<li>비교 : &gt;, &lt;, =&gt;, =&lt;, !=, ==</li>
<li>논리 : and, or, not</li>
<li>멤버 : in, not in</li>
<li>비트 : &amp;, |, ^, &lt;&lt;, &gt;&gt;</li>
<li>식별 : is, is not</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="numeric-types--integer-and-float">Numeric Types : Integer and Float</h3>
<ul>
<li>Integer : 정수형 데이터 타입<ul>
<li>Python에서는 정수 데이터를 표현할 수 있는 범위의 한계가 없음</li>
</ul>
</li>
<li>Float : 실수형 데이터 타입<ul>
<li>소수점 16자리까지 표현 가능</li>
<li>exponenet의 표현에도 한계가 존재</li>
</ul>
</li>
</ul>
<h3 id="string-type">String Type</h3>
<ul>
<li>&quot; 또는 &#39;를 출력하기 위해선 상반된 기호 사용</li>
<li>escape characters : \n, \t, \, &quot;, &#39;</li>
</ul>
<h3 id="복합-연산자">복합 연산자</h3>
<ul>
<li>a *= b</li>
<li>a /= b</li>
<li>a //= b</li>
<li>a %= b</li>
<li>a **= b</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[초격차 #9. JS
]]></title>
            <link>https://velog.io/@ahn_danna/%EC%B4%88%EA%B2%A9%EC%B0%A8-9</link>
            <guid>https://velog.io/@ahn_danna/%EC%B4%88%EA%B2%A9%EC%B0%A8-9</guid>
            <pubDate>Tue, 27 Sep 2022 03:19:03 GMT</pubDate>
            <description><![CDATA[<h1 id="1-overwatch-예제">1. overwatch 예제</h1>
<ul>
<li><code>블록 요소</code> + <code>가로 사이즈 명시</code> + <code>margin:auto</code> : <code>가운데 정렬</code></li>
</ul>
<h1 id="2-1-js-개요">2-1. JS 개요</h1>
<h2 id="01-표기법">01. 표기법</h2>
<blockquote>
<h3 id="dash-casekebab-case--html--css"><code>dash-case(kebab-case) : html / css</code></h3>
</blockquote>
<ul>
<li>the-quick-brown-fox<h3 id="snack_case--html--css"><code>snack_case : html / css</code></h3>
</li>
<li>the_quick_brown_fox<h3 id="camelcase--js"><code>camelCase : js</code></h3>
</li>
<li>theQuickBrownFox<h3 id="pascalcase--js"><code>PascalCase : js</code></h3>
</li>
<li>TheQuickBrownFox</li>
</ul>
<h2 id="02-zero-base-numbering">02. Zero-base Numbering</h2>
<blockquote>
<h3 id="특별한-경우를-제외하곤-0부터-count">특별한 경우를 제외하곤 0부터 <code>count</code></h3>
</blockquote>
<h2 id="03-주석">03. 주석</h2>
<blockquote>
<p><code>// 한 줄 메모</code>
<code>/*
여러 줄 메모 
*/</code></p>
</blockquote>
<h1 id="2-2-자료형">2-2. 자료형</h1>
<h2 id="01-string">01. String</h2>
<blockquote>
<p><code>let myName = &quot;Heropy&quot;;</code>
<code>let hello</code> = <code>(backtick)hello ${myName}(backtick)</code></p>
</blockquote>
<h2 id="02-----number">02.     Number</h2>
<blockquote>
<h3 id="정수--부동-소수점">정수 / 부동 소수점</h3>
</blockquote>
<h2 id="03-boolean">03. Boolean</h2>
<blockquote>
<h3 id="true-false-두-가지-값만-가지는-논리-데이터"><code>true, false</code> 두 가지 값만 가지는 논리 데이터</h3>
</blockquote>
<h2 id="04-undefined">04. Undefined</h2>
<blockquote>
<p><code>let undef;</code></p>
</blockquote>
<h3 id="값이-할당되지-않은-상태">값이 할당되지 않은 상태</h3>
<h2 id="05-null">05. Null</h2>
<blockquote>
<p><code>let empty = null;</code></p>
</blockquote>
<h3 id="어떤-값이-의도적으로-비어있음">어떤 값이 의도적으로 비어있음</h3>
<h2 id="06-object-객체-데이터">06. Object (객체 데이터)</h2>
<blockquote>
<h3 id="여러-데이터를-keyvalue-형태로-저장--">여러 데이터를 <code>key:value</code> 형태로 저장 <code>{ }</code></h3>
</blockquote>
<h3 id=""></h3>
<p><code>let user = {age = 23};
console.log(user.age);</code></p>
<h2 id="07-array-배열-데이터">07. Array (배열 데이터)</h2>
<blockquote>
<h3 id="여러-데이터를-순차적으로-지정합니다--">여러 데이터를 순차적으로 지정합니다. <code>[ ]</code></h3>
</blockquote>
<h3 id="-1"></h3>
<p><code>let fruits = [&#39;Apple&#39;, &#39;Banana&#39;];
console.log(fruits[1]);</code></p>
<h1 id="2-3-변수">2-3. 변수</h1>
<blockquote>
<p><code>var</code> (not recommended) 
<code>let</code> / <code>const</code> -&gt; <code>immutable</code> 여부 차이</p>
</blockquote>
<h1 id="2-4-함수">2-4. 함수</h1>
<blockquote>
</blockquote>
<h3 id="기명함수">기명함수</h3>
<p><code>function helloFunc() {
console.log(1234);
}
helloFunc();</code></p>
<blockquote>
</blockquote>
<h3 id="익명함수">익명함수</h3>
<p><code>let world = function () {
console.log(&#39;World~&#39;);
world();</code></p>
<h1 id="2-5-조건문">2-5. 조건문</h1>
<blockquote>
</blockquote>
<p><code>let isShow = true;</code>
<code>if (isShow){
comsole.log(&#39;Show!&#39;);}</code>
<code>else {
coosole.log(&#39;World&#39;);</code></p>
<h1 id="2-6-dom-api">2-6. DOM API</h1>
<blockquote>
</blockquote>
<p><code>Document Object Model</code> : <code>HTML 요소</code>
<code>Application Progranmming Interface</code> : <code>명령들</code>
-&gt; <code>JS</code>로 <code>html</code>을 제어할 때 쓰는 명령들</p>
<blockquote>
<h4 id="js가-html에-정상적으로-접근하기-위해선"><code>js가 html에 정상적으로 접근하기 위해선</code></h4>
<p><code>1. script 태그를 body 태그 맨 마지막에 작성</code>
<code>2. defer 속성 시용</code></p>
</blockquote>
<hr>
<blockquote>
<h4 id="html-요소-1개-검색"><code>HTML 요소 1개 검색</code></h4>
<p><code>const bowEl = document.querySelector(&#39;.box&#39;)</code></p>
</blockquote>
<h4 id="html-요소의-클래스-정보-객체-활용"><code>HTML 요소의 클래스 정보 객체 활용</code></h4>
<p><code>bowEl.classList.(add/remove)(&#39;active&#39;);
let isContains = boxEl.classList.contains(&#39;active&#39;);
console.log(isContains);</code></p>
<blockquote>
<h4 id="html-요소에-적용할-수-있는-메소드"><code>HTML 요소에 적용할 수 있는 메소드</code></h4>
<p><code>bowEl.addEventListener()</code></p>
</blockquote>
<h4 id="arguments-추가-가능"><code>Arguments 추가 가능</code></h4>
<p><code>bowEl.addEventListener(1, 2)</code></p>
<h4 id="1---이벤트-event-상황"><code>1 - 이벤트 (Event, 상황)</code></h4>
<p><code>bowEl.addEventListener(&#39;click&#39;, 2)</code></p>
<h4 id="2---핸들러-handler-실행할-함수"><code>2 - 핸들러 (Handler, 실행할 함수)</code></h4>
<p><code>bowEl.addEventListener(&#39;click&#39;, function() {
console.log(&#39;Click!&#39;);)</code></p>
<blockquote>
<h4 id="html-요소-모두-검색"><code>HTML 요소 모두 검색</code></h4>
<p><code>const bowEl = document.querySelectorAll(&#39;.box&#39;)</code></p>
</blockquote>
<h4 id="찾은-요소들-반복해서-함수-실행"><code>찾은 요소들 반복해서 함수 실행</code></h4>
<p><code>bowEl.forEach(function () {});</code></p>
<blockquote>
<h4 id="getter--setter"><code>Getter / Setter</code></h4>
<p><code>console.log(bowEl.textContent);</code> -&gt; <code>getter</code>
<code>bowEl.textContent = &#39;HEROPY&#39;;</code> -&gt; <code>setter</code></p>
</blockquote>
<h1 id="3-메소드-체이닝">3. 메소드 체이닝</h1>
<blockquote>
<h4 id="메소드를-연달아-쓰는-기법"><code>메소드를 연달아 쓰는 기법</code></h4>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[초격차 #8.]]></title>
            <link>https://velog.io/@ahn_danna/%EC%B4%88%EA%B2%A9%EC%B0%A8-8</link>
            <guid>https://velog.io/@ahn_danna/%EC%B4%88%EA%B2%A9%EC%B0%A8-8</guid>
            <pubDate>Mon, 26 Sep 2022 13:32:45 GMT</pubDate>
            <description><![CDATA[<h2 id="플렉스-정렬-container">플렉스 (정렬) Container</h2>
<blockquote>
<p><strong>display</strong></p>
</blockquote>
<ul>
<li>flex : 블록요소처럼 flex container 정의</li>
<li>inline-flex : 인라인 요소처럼 flex container 정의</li>
</ul>
<blockquote>
<p>*<em>flex-directrion *</em></p>
</blockquote>
<ul>
<li>row (default)</li>
<li>row-reverse</li>
<li><del>column</del></li>
<li><del>column-reverse</del></li>
</ul>
<blockquote>
<p><strong>flex-wrap</strong> : flex items 묶음 여부</p>
</blockquote>
<ul>
<li>Norwap (default) : 묶음(줄 바꿈) 없음</li>
<li>wrap : 여러 줄로 묶음 =&gt; 칸이 모자라면 줄 바꿈</li>
</ul>
<blockquote>
<p><strong>justify-content</strong> : 주 축의 정렬 방법</p>
</blockquote>
<ul>
<li>flex-start (default) : flex items를 시작점으로 정렬</li>
<li>flex-end : flex items를 끝점으로 정렬</li>
<li>center : flex items를 가운데 정렬</li>
</ul>
<blockquote>
<p><strong>align-content</strong> : 교차 축의 여러 줄 정렬 방법 (두 줄 이상 있을 때)</p>
</blockquote>
<ul>
<li><p>stretch (default) : flex items를 시작점으로 정렬 =&gt; 늘어나려는 성질</p>
</li>
<li><p>flex-start : flex items를 시작점으로 정렬</p>
</li>
<li><p>flex-end : flex items를 끝점으로 정렬</p>
</li>
<li><p>center : flex items를 가운데 정렬</p>
</li>
</ul>
<blockquote>
<p><strong>align-items</strong> : 교차 축의 한 줄 정렬 방법 (content보다 많이 씀)</p>
</blockquote>
<ul>
<li><p>stretch (default) : flex items를 교차축으로 늘림</p>
</li>
<li><p>flex-start : flex items를 각 줄의 시작점으로 정렬</p>
</li>
<li><p>flex-end : flex items를 각 줄의 끝점으로 정렬</p>
</li>
<li><p>center : flex items를 각 줄의 가운데 정렬</p>
</li>
</ul>
<h2 id="플렉스-정렬-items">플렉스 (정렬) Items</h2>
<blockquote>
<p><strong>order</strong> =&gt; html 구조를 바꾸지 않아도 순서 변경 가능</p>
</blockquote>
<ul>
<li>0 (default) : 순서 없음</li>
<li>숫자 : 숫자가 작을수록 먼저</li>
</ul>
<blockquote>
<p><strong>flex-grow</strong> : flex item의 증가 너비 비율 =&gt; 남을 때 증가 비율</p>
</blockquote>
<ul>
<li>0 (default) : 증가 비율 없음</li>
<li>숫자 : 증가 비율</li>
</ul>
<blockquote>
<p><strong>flex-shrink</strong> : flex item의 감소 너비 비율 =&gt; 넘칠 때 감소 비율</p>
</blockquote>
<ul>
<li>1 (default) : 증가 비율 없음</li>
<li>숫자 : 증가 비율</li>
</ul>
<blockquote>
<p><strong>flex-basis</strong> : flex item의 공간 배분 전 기본 너비</p>
</blockquote>
<ul>
<li>auto (default) : 요소의 content 너비</li>
<li>단위 : px, em, rem 등 단위로 지정</li>
<li>0으로 설정 =&gt; 시각적으로 비율에 맞게 나옴</li>
</ul>
<h2 id="전환">전환</h2>
<blockquote>
<p><strong>transition: 속성명 *지속시간(필수) 타이밍함수 대기시간</strong></p>
</blockquote>
<ul>
<li><p>transition-property </p>
<ul>
<li>all: 모든 속성에 적용</li>
<li>속성이름 : 전환 효과를 사용할 속성 이름 명시</li>
</ul>
</li>
<li><p>transition-duration </p>
<ul>
<li>0s (default) : 지속 시간 없음</li>
<li>시간</li>
</ul>
</li>
<li><p>transitiom-timing-function </p>
<ul>
<li>ease(default) : 느 - 빠 - 느</li>
<li>linear : 일정</li>
<li>ease-in : 느 - 빠</li>
<li>ease-out : 빠 - 느</li>
<li>ease-in-out: 느 - 빠 - 느<ul>
<li>관련 사이트<ul>
<li><a href="https://easings.net/">easing 함수 치트 시트</a></li>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/easing-function">easing functions mdn</a></li>
<li><a href="https://greensock.com/docs/v2/Easing">tweenmax easing
</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><p>transition-delay : 대기 시간 지정</p>
<ul>
<li>0s (default) : 대기 시간 없음</li>
<li>시간 : 대기 시간 지정</li>
</ul>
</li>
</ul>
<h2 id="변환">변환</h2>
<blockquote>
<p><strong>transform: 변환함수1 변환함수2 변환함수3 ...;</strong>
<strong>transform: 원근법 이동 크기 회전 기울임;</strong></p>
</blockquote>
<h4 id="2d-변환함수">2D 변환함수</h4>
<ul>
<li><p>px</p>
<ul>
<li><p>translate(x, y) : 이동(x축, y축)</p>
</li>
<li><p>translateX(x) : 이동(x축)</p>
</li>
<li><p>translateY(y) : 이동(y축)</p>
</li>
<li><p>scale(x, y) : 크기(x축, y축)</p>
<ul>
<li>특정 단위 입력 X =&gt; 배수 의미</li>
</ul>
</li>
</ul>
</li>
<li><p>deg</p>
<ul>
<li><p>rotate(degree) : 회전(각도)</p>
</li>
<li><p>skewX(x) : 기울임(x축)</p>
</li>
<li><p>skewY(y) : 기울임(y축)</p>
</li>
</ul>
</li>
</ul>
<hr>
<h4 id="3d-변환함수">3D 변환함수</h4>
<ul>
<li><p>px</p>
<ul>
<li>perspective(n) : 원근법(거리) =&gt; 제일 앞에 명시</li>
</ul>
</li>
<li><p>deg</p>
<ul>
<li><p>rotateX(x) : 회전(x축)</p>
</li>
<li><p>rotateX(y) : 회전(y축)</p>
</li>
</ul>
</li>
</ul>
<hr>
<h4 id="perspective-속성-vs-함수">perspective 속성 vs. 함수</h4>
<ul>
<li><p><strong>perspective</strong>: 600px</p>
<ul>
<li><p>적용 대상 : 관찰 대상의 부모 </p>
</li>
<li><p>기준점 설정 : perspective-origin</p>
</li>
</ul>
</li>
<li><p><strong>transforrm</strong>: perspecctive(600px)</p>
<ul>
<li><p>적용 대상 : 관찰 대상</p>
</li>
<li><p>기준점 설정 : transform-origin</p>
</li>
</ul>
</li>
</ul>
<hr>
<h4 id="backspace-visibility--3d-변환으로-회전된-요소의-뒷면-숨김-여부">backspace-visibility : 3D 변환으로 회전된 요소의 뒷면 숨김 여부</h4>
<ul>
<li><strong>visible</strong>(default) : 뒷면 보임</li>
<li><strong>hidden</strong> : 뒷면 숨김</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[초격차 #7.]]></title>
            <link>https://velog.io/@ahn_danna/%EC%B4%88%EA%B2%A9%EC%B0%A8-7</link>
            <guid>https://velog.io/@ahn_danna/%EC%B4%88%EA%B2%A9%EC%B0%A8-7</guid>
            <pubDate>Fri, 23 Sep 2022 11:19:51 GMT</pubDate>
            <description><![CDATA[<h2 id="속성">속성</h2>
<blockquote>
<p><strong>박스 모델</strong> : w, h, 내부/외부 여백</p>
</blockquote>
<blockquote>
<p><strong>글꼴, 문자</strong> </p>
</blockquote>
<blockquote>
<p><strong>배경</strong> : 배경 색상/이미지</p>
</blockquote>
<blockquote>
<p><strong>배치</strong></p>
</blockquote>
<blockquote>
<p><strong>플렉스 (정렬)</strong> : 수평 정렬</p>
</blockquote>
<blockquote>
<p><strong>전환</strong> : 요소의 전후 상태를 애니메이션으로 연결</p>
</blockquote>
<blockquote>
<p><strong>변환</strong> : 요소 회전, 이동, 크기 조절 =&gt; 요소에 변화를 주는 속성</p>
</blockquote>
<blockquote>
<p><strong>띄움</strong> : 요소를 공중에 띄움 =&gt; 주변에 글자가 흐를 수 있게 함</p>
</blockquote>
<blockquote>
<p><strong>애니메이션</strong> : 전환보다 복잡한 구조의 애니메이션</p>
</blockquote>
<blockquote>
<p><strong>그리드</strong> : 행과 열이 있는 2차원 구조를 만들가 위한 속성</p>
</blockquote>
<blockquote>
<p><strong>다단</strong> : 텍스트를 여러 단으로 나눔</p>
</blockquote>
<blockquote>
<p><strong>필터</strong> : 요소 블러, 반전, 흑화 ...</p>
</blockquote>
<h2 id="너비--요소의-가로-세로-너비">너비 : 요소의 가로, 세로 너비</h2>
<blockquote>
<p><strong>auto *<em>(default): 브라우저가 너비를 계산
*</em>단위</strong> : px/em/vw 등으로 지정</p>
</blockquote>
<blockquote>
<p>*<em>span *</em>: 콘텐츠가 포함된 영역만큼 줄어듦</p>
</blockquote>
<blockquote>
<p>*<em>div *</em>: 가로 =&gt; 부모 요소만큼 늘어남 / 세로 =&gt; 컨텐츠가 포함된 영역만큼 줄어듦 </p>
</blockquote>
<h2 id="max-width-max-height--요소의-최대-너비">max-width, max-height : 요소의 최대 너비</h2>
<blockquote>
<ul>
<li>none (default) : 제한 없음</li>
<li><del>auto : 브라우저가 계산</del></li>
</ul>
</blockquote>
<h2 id="min-width-min-height--요소의-최소-너비">min-width, min-height : 요소의 최소 너비</h2>
<blockquote>
<ul>
<li>none (default) : 제한 없음</li>
<li><del>auto : 브라우저가 계산</del></li>
</ul>
</blockquote>
<h2 id="css-단위">CSS 단위</h2>
<blockquote>
<p><strong>1. px : 픽셀
2. % : 상대적 백분율
3. em : 요소의 글꼴 크기
4. rem : 루트 요소 (html) 글꼴 대비 크기
5. vw : 뷰포트 가로 너비의 백분율
6. vh : 뷰포트 세로 너비의 백분율</strong></p>
</blockquote>
<h2 id="외부-여백-단축-속성-margin">외부 여백 단축 속성 margin</h2>
<blockquote>
<ul>
<li>0 (default) : 외부 여백 없음 </li>
</ul>
</blockquote>
<ul>
<li>auto : 브라우저가 계산 (가운데 정렬)</li>
<li>단위 : px/em/vw 등 단위로 계산, 음수값도 가능</li>
<li><strong>margin : __</strong> =&gt; 모든 방향 일괄 적용</li>
<li><strong>margin : __  __</strong> =&gt; 위/아래 좌/우</li>
<li><strong>margin : __ __ __</strong> =&gt; 위 좌/우 아래</li>
<li><strong>margin : __ __ __ __</strong> =&gt; 위 우 아래 좌 (시계방향)</li>
</ul>
<blockquote>
<ul>
<li>margin-bottom 처럼 개별 속성 지정도 가능</li>
</ul>
</blockquote>
<h2 id="내부-여백-단축-속성-padding">내부 여백 단축 속성 padding</h2>
<blockquote>
<ul>
<li>0 (default) : 내부 여백 없음 </li>
</ul>
</blockquote>
<ul>
<li>% : 부모 요소의 가로 너비에 대한 비율로 지정</li>
<li>단위 : px/em/vw 등 단위로 계산</li>
<li>요소의 크기가 커짐</li>
<li><strong>padding : __</strong> =&gt; 모든 방향 일괄 적용</li>
<li><strong>padding : __  __</strong> =&gt; 위/아래 좌/우</li>
<li><strong>padding : __ __ __</strong> =&gt; 위 좌/우 아래</li>
<li><strong>padding : __ __ __ __</strong> =&gt; 위 우 아래 좌 (시계방향)</li>
</ul>
<blockquote>
<ul>
<li>padding-bottom 처럼 개별 속성 지정도 가능</li>
</ul>
</blockquote>
<h2 id="테두리-선border과-색상-표현">테두리 선(border)과 색상 표현</h2>
<blockquote>
<p><strong>border : border-width border-style border-color;</strong></p>
</blockquote>
<ul>
<li><p>순서는 상관 없지만, 관습대로 코딩하는 습관 기르기</p>
</li>
<li><p><strong>border-width</strong> :</p>
<ul>
<li><del>medium, thin, thick</del> px, em, % 등으로 지정하기</li>
<li>단축 속성이자 개별 속성</li>
</ul>
</li>
<li><p><strong>border-style</strong> :</p>
<ul>
<li>none (default) : 선 없음</li>
<li>solid : 실선 (일반 선)</li>
<li>dashed : 파선 -----</li>
<li>단축 속성이자 개별 속성</li>
</ul>
</li>
<li><p><strong>border-color</strong> :</p>
<ul>
<li>black (default) </li>
<li>transparent : 투명</li>
<li>단축 속성이자 개별 속성</li>
</ul>
</li>
<li><p><strong>방향 지정 가능</strong></p>
<ul>
<li><strong>border-top / border-bottom / border-right / border-left</strong></li>
</ul>
</li>
</ul>
<blockquote>
<p>** 색상 표현 **</p>
</blockquote>
<ul>
<li><p>색을 사용하는 모든 속성에 적용 가능한 색상 표현</p>
</li>
<li><p><strong>색상 이름</strong></p>
<ul>
<li>브라우저에서 제공하는 색상 이름 red, tomato, royalblue</li>
<li>브라우저 마다 달라서 추천 X</li>
</ul>
</li>
<li><p><strong>Hex 색상코드</strong> </p>
<ul>
<li>16진수 색상 #000, #FFFFFF</li>
<li><strong>가장 많이 사용</strong></li>
</ul>
</li>
<li><p><strong>RGB</strong> </p>
<ul>
<li>빛의 삼원색 rgb(255, 255, 255) </li>
</ul>
</li>
<li><p><strong>RGBA</strong> </p>
<ul>
<li>빛의 삼원색 + 투명도 rgba(0, 0, 0, 0.5)</li>
</ul>
</li>
</ul>
<h2 id="모서리-둥글게-border-radius">모서리 둥글게 (border-radius)</h2>
<blockquote>
<ul>
<li>0(default) : 둥글게 없음</li>
</ul>
</blockquote>
<ul>
<li>단위 : px, em, vw 등 단위로 지정</li>
<li>값이 4개 =&gt; 시계방향으로 적용</li>
</ul>
<h2 id="크기-계산-box-sizing">크기 계산 (box-sizing)</h2>
<ul>
<li>요소의 크기 계산 기준을 지정</li>
</ul>
<blockquote>
<ul>
<li><strong>content-box</strong>(default) : 요소의 내용으로 크기 계산</li>
</ul>
</blockquote>
<ul>
<li><strong>border-box</strong> : 요소의 내용 + padding + border로 크기 계산</li>
<li>값이 4개 =&gt; 시계방향으로 적용</li>
</ul>
<h2 id="넘침-제어-overflow">넘침 제어 (Overflow)</h2>
<ul>
<li>요소의 크기 이상으로 내용이 넘쳤을 때 보여짐을 제어하는 단축 속성</li>
</ul>
<blockquote>
<ul>
<li><strong>visible</strong>(default) : 넘친 내용을 그대로 보여줌</li>
</ul>
</blockquote>
<ul>
<li><strong>hidden</strong> : 넘친 내용을 잘라냄</li>
<li><strong>auto</strong> : 넘친 내용이 있는 경우에만 잘라내고 스크롤바 생성</li>
<li><strong>scroll</strong> : x축, y축 스크롤바 생성</li>
<li><strong>overflow-x / overflow-y</strong> : 개별 속성 지정 가능</li>
</ul>
<h2 id="display">display</h2>
<ul>
<li>요소의 화면 출력 특성</li>
</ul>
<blockquote>
<ul>
<li><strong>block</strong>(default) : 상자 요소</li>
</ul>
</blockquote>
<ul>
<li><strong>inline</strong>(default) : 글자 요소</li>
<li><strong>inline-block</strong>(default) : 글자 + 상자 요소</li>
<li><strong>flex</strong> : 플렉스 박스 (1차원 레이아웃)</li>
<li><strong>grid</strong> : 그리드 (2차원 레이아웃)</li>
<li><strong>none</strong> : 보여짐 특성 없음, 화면에서 사라짐</li>
<li><strong>기타</strong> : table, table-row, table-cell 등 ..</li>
</ul>
<h2 id="요소-투명도-opacity">요소 투명도 (opacity)</h2>
<blockquote>
<ul>
<li><strong>1(default)</strong> : 불투명</li>
</ul>
</blockquote>
<ul>
<li><strong>0~1</strong> : 0부터 1 사이의 소수점 숫자 =&gt; 0 생략 가능 .5/.6</li>
</ul>
<h2 id="글꼴">글꼴</h2>
<blockquote>
<ul>
<li><strong>font-style</strong> : 글자의 기울기</li>
</ul>
</blockquote>
<ul>
<li><strong>normal</strong>(default) : 기울기 없음</li>
<li><strong>italic</strong> : 이탤릭체</li>
</ul>
<blockquote>
<ul>
<li><strong>font-weight</strong> : 글자의 두께</li>
</ul>
</blockquote>
<ul>
<li><strong>normal, 400</strong>(default) : 기본 두께</li>
<li><strong>bold, 700</strong> : 두껍게</li>
<li><strong>100 ~ 900</strong> : 100 단위의 숫자 9개, normal / bold 이외 두께</li>
</ul>
<blockquote>
<ul>
<li><strong>font-size</strong> : 글자의 크기</li>
</ul>
</blockquote>
<ul>
<li><strong>16px</strong>(default) : 기울기 없음</li>
<li><strong>단위</strong> : px, em, rem 등 단위로 지정</li>
</ul>
<blockquote>
<ul>
<li><strong>line-height</strong> : 한 줄의 높이</li>
</ul>
</blockquote>
<ul>
<li><strong>normal</strong>(default) : 브라우저의 기본 정의 사용</li>
<li><strong>숫자</strong> : 요소의 글꼴 크기의 배수로 지정</li>
<li><strong>단위</strong> : px, em, rem 등 단위로 지정</li>
</ul>
<blockquote>
<ul>
<li><strong>font-family</strong> : 글꼴</li>
</ul>
</blockquote>
<ul>
<li>font-family : 글꼴1, &quot;글꼴2&quot;, .. 글꼴 계열</li>
<li>후보 중 가능한 글꼴 우선 적용, 안 되면 마지막 계열 중 아무 폰트 적용<ul>
<li>serif : 바탕체 계열</li>
<li><strong>sans-serif : 고딕체 계열</strong></li>
<li>monospace : 고정너비 글꼴 계열</li>
<li>cursive : 필기체 계열</li>
<li>fantasy : 장식 글꼴 계열</li>
</ul>
</li>
<li><strong>normal</strong>(default) : 브라우저의 기본 정의 사용</li>
<li><strong>숫자</strong> : 요소의 글꼴 크기의 배수로 지정</li>
<li><strong>단위</strong> : px, em, rem 등 단위로 지정</li>
</ul>
<h2 id="문자">문자</h2>
<blockquote>
<ul>
<li><strong>color</strong> : 글자의 색상</li>
</ul>
</blockquote>
<ul>
<li><strong>rgb(0, 0, 0)</strong> (default) : 검정색<ul>
<li><strong>색상</strong> : 기타 지정 가능한 색상</li>
</ul>
</li>
</ul>
<blockquote>
<ul>
<li><strong>text-align</strong> : 문자의 정렬 방식</li>
</ul>
</blockquote>
<ul>
<li><strong>left</strong> (default) : 왼쪽 정렬<ul>
<li><strong>right</strong> : 오른쪽 정렬</li>
<li><strong>center</strong> : 가운데 정렬</li>
</ul>
</li>
</ul>
<blockquote>
<ul>
<li><strong>text-decolation</strong> : 문자의 장식</li>
</ul>
</blockquote>
<ul>
<li><strong>none</strong> (default) : 장식 없음<ul>
<li><strong>underline</strong> : 밑줄</li>
<li><strong>line-through</strong> : 중앙 선</li>
</ul>
</li>
</ul>
<blockquote>
<ul>
<li><strong>text-indent</strong> : 문자의 첫 줄의 들여쓰기</li>
</ul>
</blockquote>
<ul>
<li><strong>0</strong> (default) : 들여쓰기 없음<ul>
<li><strong>right</strong> : 오른쪽 정렬</li>
<li><strong>단위</strong> : px, em, rem 등 단위로 지정</li>
</ul>
</li>
<li>음수를 사용하면 내어쓰기</li>
</ul>
<h2 id="배경">배경</h2>
<blockquote>
<ul>
<li><strong>background-color</strong> : 요소의 배경 색상</li>
</ul>
</blockquote>
<ul>
<li><strong>transparent</strong> (default) : 투명함</li>
<li><strong>색상</strong> : 지정 가능한 색상</li>
</ul>
<blockquote>
<ul>
<li><strong>background-image</strong> : 요소의 배경 이미지 삽입</li>
</ul>
</blockquote>
<ul>
<li><strong>none</strong> (default) : 이미지 없음</li>
<li><strong>url(&quot;경로&quot;)</strong> : 이미지 경로&#39;url()&#39;</li>
</ul>
<blockquote>
<ul>
<li><strong>background-repeat</strong> : 요소의 배경 이미지 반복</li>
</ul>
</blockquote>
<ul>
<li><strong>repeat</strong> (default) : 이미지를 수직, 수평 반복</li>
<li><strong>repeat-x</strong> : 이미지를 수평 반복</li>
<li><strong>repeat-y</strong> : 이미지를 수직 반복</li>
<li><strong>no-repeat</strong> : 이미지 반복 안 함</li>
</ul>
<blockquote>
<ul>
<li><strong>background-position</strong> : 요소의 배경 이미지 위치</li>
</ul>
</blockquote>
<ul>
<li><strong>0% 0%</strong> (default) : 0% ~ 100% 사이 값</li>
<li><strong>방향</strong> : top, bottom, left, right, center 방향</li>
<li><strong>단위</strong> : px, em, rem 등 단위로 지정</li>
</ul>
<blockquote>
<ul>
<li><strong>background-size</strong> : 요소의 배경 이미지 크기</li>
</ul>
</blockquote>
<ul>
<li><strong>auto</strong> (default) : 이미지의 실제 크기</li>
<li><strong>단위</strong> : px, em, rem 등 단위로 지정</li>
<li><strong>cover</strong> : 비율을 유지, 요소의 더 넓은 너비에 맞춤</li>
<li><strong>contain</strong> : 비율을 유지, 요소의 더 짧은 너비에 맞춤</li>
</ul>
<blockquote>
<ul>
<li><strong>background-attachment</strong> : 요소의 배경 이미지 스크롤 특성</li>
</ul>
</blockquote>
<ul>
<li><strong>scroll</strong> (default) : 이미지가 요소를 따라서 같이 스크롤</li>
<li><strong>fixed</strong> : 이미가 뷰포트에 고정, 스크롤 X</li>
<li><strong>cover</strong> : 비율을 유지, 요소의 더 넓은 너비에 맞춤</li>
</ul>
<h2 id="배치">배치</h2>
<blockquote>
<ul>
<li><strong>position</strong> : 요소의 위치 지정 기준</li>
</ul>
</blockquote>
<ul>
<li><strong>static</strong> (default) : 기준 없음<ul>
<li><del><strong>relative</strong> : 요소 자신의 기존 자리를 기준</del> =&gt; 부모요소 만들어줌</li>
</ul>
</li>
</ul>
<ul>
<li><p><strong>absolute</strong> : 위치 상 부모 요소를 기준, 주변 요소와 상호작용 x</p>
</li>
<li><p><strong>fixed</strong> : 뷰포트(브라우저)를 기준 =&gt; body를 scroll 해도 고정</p>
</li>
<li><p><del><strong>sticky</strong> : 스크롤 영역</del></p>
</li>
<li><p>같이 이용하는 CSS 속성들 (모두 음수 사용 가능)</p>
<ul>
<li>요소의 각 방향별 거리 지정 (auto : 브라우저가 계산)<ul>
<li>top</li>
<li>bottom</li>
<li>left</li>
<li>right</li>
<li>z-index : 요소의 쌓임 정도를 지정<ul>
<li>auto (default) : 부모 요소와 동일한 쌓임 정도</li>
<li>숫자 : 숫자가 높을수록 위에 쌓임<ul>
<li>보통은 0 취급, 뒤로 보내려면 -1</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<hr>
<blockquote>
<p><strong>요소 쌓임 순서 (stack order)</strong></p>
</blockquote>
<p>어떤 요소가 사용자와 더 가깝게 있는지(위에 쌓이는지) 결정</p>
<ul>
<li><p>요소에 position 속성의 값이 있는 경우 위에 쌓임 (static 제외)</p>
</li>
<li><p>1번 조건과 같은 경우, z-index 속성의 숫자 값이 높을수록 위에 쌓임</p>
</li>
<li><p>1/2번 조건까지 같을 경우, HTML의 다음 구조일수록 위에 쌓임</p>
</li>
</ul>
<hr>
<blockquote>
<p><strong>요소의 display가 변경됨</strong></p>
</blockquote>
<ul>
<li>position 값으로 absolute, fixed가 지정된 요소는 display 속성이 block으로 변경됨</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[초격차 #6.]]></title>
            <link>https://velog.io/@ahn_danna/%EC%B4%88%EA%B2%A9%EC%B0%A8-6</link>
            <guid>https://velog.io/@ahn_danna/%EC%B4%88%EA%B2%A9%EC%B0%A8-6</guid>
            <pubDate>Wed, 21 Sep 2022 07:20:21 GMT</pubDate>
            <description><![CDATA[<h3 id="wrapping">Wrapping</h3>
<blockquote>
<p>요소를 어떤 요소로 묶어주는 행위</p>
</blockquote>
<h3 id="전역-속성--전체의-영역에서-모두-사용-가능한-속성">전역 속성 : 전체의 영역에서 모두 사용 가능한 속성</h3>
<blockquote>
<p><strong>title 속성</strong> : 요소의 정보나 설명을 지정, 마우스를 해당 요소에 올려 두면 설명 표시</p>
</blockquote>
<blockquote>
<p><strong>style 속성</strong> : 적용할 css 스타일 지정</p>
</blockquote>
<blockquote>
<p><strong>class 속성</strong> : 요소를 지칭하는 중복 가능한 이름 =&gt; . class</p>
</blockquote>
<blockquote>
<p><strong>id 속성</strong> : 요소를 지칭하는 고유한 이름 =&gt; # id</p>
</blockquote>
<blockquote>
<p><strong>data-이름 속성</strong> : 요소에 데이터를 지정</p>
</blockquote>
<h3 id="defer-속성">defer 속성</h3>
<blockquote>
<p>html 분석 후에 js 실행하도록 하는 속성</p>
</blockquote>
<h3 id="css-선언-방식">CSS 선언 방식</h3>
<blockquote>
<p><strong>내장 방식</strong> : style 태그 내부에 작성</p>
</blockquote>
<blockquote>
<p><strong>인라인 방식</strong> : 요소의 style 속성에 직접 스타일을 작성, 선택자 없음, <strong>유지 보수 불리</strong></p>
</blockquote>
<blockquote>
<p><strong>링크 방식</strong> : 외부 css 문서를 가져와 연결하는 방식 H &lt;- C [병렬]</p>
</blockquote>
<blockquote>
<p><strong>@import 방식</strong> : css 문서 안에서 또 다른 css 문서를 가져와 연결하는 방식 H &lt;- C &lt;- C [직렬] =&gt; 연결이 지연될 수 O</p>
</blockquote>
<h3 id="css-선택자--기본-선택자">CSS 선택자 : 기본 선택자</h3>
<blockquote>
<p> *<em>전체 선택자 * *</em> : 모든 요소를 선택</p>
</blockquote>
<blockquote>
<p>*<em>태그 선택자 ABC *</em>: 태그 이름이 ABC인 요소 선택</p>
</blockquote>
<blockquote>
<p><strong>클래스 선택자 .ABC</strong> : class 속성의 값이 ABC인 요소 선택</p>
</blockquote>
<blockquote>
<p>*<em>아이디 선택자 #ABC *</em>: id 속성의 값이 ABC인 요소 선택</p>
</blockquote>
<h3 id="css-선택자--복합-선택자">CSS 선택자 : 복합 선택자</h3>
<blockquote>
<p><strong>일치 선택자 ABCXYZ</strong>: 선택자 ABC와 XYZ를 동시에 만족하는 요소 선택 =&gt; 태그 선택자 먼저</p>
</blockquote>
<blockquote>
<p><strong>자식 선택자 ABC &gt; XYZ</strong> : 선택자 ABC와 자식 요소 XYZ 선택</p>
</blockquote>
<blockquote>
<p><strong>하위(후손) 선택자 ABC XYZ</strong> : 선택자 ABC와 하위 요소 XYZ 선택, &#39;띄어쓰기&#39;가 선택자의 기호</p>
</blockquote>
<blockquote>
<p><strong>인접 형제 선택자 ABC + XYZ</strong> : 선택자 ABC와 다음 형제 요소 XYZ 하나를 선택</p>
</blockquote>
<blockquote>
<p><strong>일반 형제 선택자 ABC ~ XYZ</strong> : 선택자 ABC와 다음 형제 요소 XYZ 모두를 선택</p>
</blockquote>
<h3 id="css-선택자--가상-class-선택자">CSS 선택자 : 가상 class 선택자</h3>
<blockquote>
<p>css 가상 class 선택자로도 js처럼 일부 동작 제어 가능</p>
</blockquote>
<blockquote>
<p><strong>ABC:hover</strong> : 선택자 ABC 요소에 마우스 커서가 올라가 있는 동안 선택</p>
</blockquote>
<blockquote>
<p><strong>ABC:active</strong>     : 선택자 ABC 요소에 마우스를 클릭하고 있는 동안 선택</p>
</blockquote>
<blockquote>
<p><strong>ABC:focus</strong>     : 선택자 ABC 요소가 focus되면 선택</p>
</blockquote>
<ul>
<li>focus가 될 수 있는 요소는 html 대화형 컨텐츠에 해당</li>
<li>input, a, button, label, select 등</li>
<li>tabindex 속성을 사용한 요소도 focus 될 수 있음<ul>
<li>focus 속성을 통해 focus 될 수 있는 요소를 만들 수 있음</li>
<li>tab 키를 사용해 focus할 수 있는 순서를 지정하는 속성</li>
<li>순서로 -1이 아닌 다른 값을 넣는 것은 논리적 흐름을 방해하기 때문에 권장하지 않음</li>
</ul>
</li>
</ul>
<blockquote>
<p><strong>ABC:first_child</strong> : 선택자 ABC가 형제 요소 중 첫째라면 선택</p>
</blockquote>
<blockquote>
<p><strong>ABC:last_child</strong> : 선택자 ABC가 형제 요소 중 막내라면 선택</p>
</blockquote>
<blockquote>
<p><strong>ABC:nth_child(n)</strong> : 선택자 ABC가 형제 요소 중 (n)째라면 선택</p>
</blockquote>
<ul>
<li>2n, 2n+1, 3n, n+2 ... 등을 통해 특정 요소 선택 가능</li>
</ul>
<blockquote>
<p><strong>ABC:not(XYZ)</strong> : 선택자 XYZ가 아닌 ABC 요소 선택</p>
</blockquote>
<h3 id="css-선택자--가상-요소-선택자">CSS 선택자 : 가상 요소 선택자</h3>
<blockquote>
<p><strong>ABC::before</strong> : 선택자 ABC 요소의 내부 앞에 내용을 삽입, 가상 inline 요소</p>
</blockquote>
<blockquote>
<p><strong>ABC::after</strong> : 선택자 ABC 요소의 내부 뒤에 내용을 삽입, 가상 inline 요소</p>
</blockquote>
<ul>
<li>display : inline과 block 속성 지정 가능</li>
</ul>
<h3 id="css-선택자--속성-선택자">CSS 선택자 : 속성 선택자</h3>
<blockquote>
<p><strong>[ABC]</strong> : 속성 ABC를 포함한 요소 선택</p>
</blockquote>
<blockquote>
<p><strong>[ABC=&quot;XYZ&quot;]</strong> : 속성 ABC를 포함하고 값이 XYZ인 요소 선택</p>
</blockquote>
<blockquote>
<p><strong>[ABC]</strong> : 속성 ABC를 포함한 요소 선택</p>
</blockquote>
<blockquote>
<p><strong>[ABC]</strong> : 속성 ABC를 포함한 요소 선택</p>
</blockquote>
<h3 id="스타일-상속--부모상위-요소-css가-자식후손-요소에-영향을-미침">스타일 상속 : 부모/상위 요소 css가 자식/후손 요소에 영향을 미침</h3>
<blockquote>
<p>모두 글자/문자 관련 속성</p>
</blockquote>
<h3 id="강제-상속--속성-inherit">강제 상속 : &quot;속성: inherit&quot;</h3>
<blockquote>
<p>부모 요소 스타일 따름</p>
</blockquote>
<h3 id="선택자-우선순위-명시도">선택자 우선순위 (명시도)</h3>
<blockquote>
<p>!important : 99999999999999점</p>
</blockquote>
<blockquote>
<p>id 선택자 : 100점</p>
</blockquote>
<blockquote>
<p>class 선택자 : 10점</p>
</blockquote>
<blockquote>
<p>tag 선택자 : 1점</p>
</blockquote>
<blockquote>
<p>전체 상속자 : 0점</p>
</blockquote>
<blockquote>
<p>inline 선언 : 1000점</p>
</blockquote>
<blockquote>
<p>상속 : X</p>
</blockquote>
<blockquote>
<p>🐭 점수가 같으면 나중에 쓴 게 적용됨</p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[초격차 #5.]]></title>
            <link>https://velog.io/@ahn_danna/%EC%B4%88%EA%B2%A9%EC%B0%A8-5</link>
            <guid>https://velog.io/@ahn_danna/%EC%B4%88%EA%B2%A9%EC%B0%A8-5</guid>
            <pubDate>Sun, 18 Sep 2022 12:55:45 GMT</pubDate>
            <description><![CDATA[<h3 id="상대경로--절대-경로">상대경로 / 절대 경로</h3>
<blockquote>
<ol>
<li>상대경로
 <strong>./</strong> (생략 가능) : 주변 경로
 ** ../** : 상위 경로</li>
</ol>
</blockquote>
<blockquote>
<ol start="2">
<li>절대경로
 <strong>http(https)</strong> : 원격 사이트 주소
 <strong>/(//)</strong> : 루트 경로로부터 접근</li>
</ol>
</blockquote>
<h3 id="브라우저-스타일-초기화">브라우저 스타일 초기화</h3>
<blockquote>
<p>브라우저에서 기본적으로 설정한 css 값 초기화 -&gt; <strong>크로스 브라우징</strong>
파일명.min.확장자와 같이 <strong>min(Minify)</strong> 키워드는 파일이 <strong>난독화나 경령화</strong>되었음을 의미
외부에서 가져와 사용하는 플러그인, 라이브러리 등을 직접 수정할 상황은 드물기 때문에 굳이 원본을 사용할 필요가 없음.</p>
</blockquote>
<pre><code>https://cdn.jsdelivr.net/npm/reset-css@5.0.1/reset.min.css</code></pre><h3 id="emmet">emmet</h3>
<blockquote>
<p>HTML, XML, XSL 문서 등을 편집할 때 빠른 코딩을 위해 사용하는 플러그인
emmet은 css 선택자를 활용해 사용하는 기능</p>
<ul>
<li>: 곱하기
{} : 내용 삽입
$ : 순서대로 숫자 입력</li>
</ul>
</blockquote>
<h3 id="empty-tag">empty tag</h3>
<blockquote>
<p>확장 기능인 속성 지정 </p>
</blockquote>
<blockquote>
<pre><code>&lt;태그&gt;</code></pre></blockquote>
<pre><code>html 1, 2, 3, 4, 5
편리함


&gt; ```
&lt;태그/&gt;</code></pre><p>xhtml(xml), html 5 
엄격, 안전함</p>
<h3 id="글자와-상자">글자와 상자</h3>
<blockquote>
<ul>
<li>요소가 화면에 출력되는 특성, 크게 2가지로 구분</li>
</ul>
</blockquote>
<blockquote>
<p> <strong>인라인 요소</strong> : 글자를 만들기 위한 요소</p>
</blockquote>
<ul>
<li><strong>요소가 수평으로 쌓임</strong></li>
<li>span : 콘텐츠 영역을 설정하는 용도, 줄바꿈 처리 =&gt; 띄어쓰기로 인식, 위아래 margin/padding 지정 무의미</li>
<li>margin : 요소의 외부 여백을 지정하는 css 속성</li>
<li>padding : 요소의 내부 여백을 지정하는 css 속성</li>
<li>자식요소로 블록 요소 사용 불가</li>
<li>가로, 세로 지정 불가</li>
</ul>
<blockquote>
<p><strong>블록 요소</strong> : 상자(레이아웃)를 만들기 위한 요소</p>
</blockquote>
<ul>
<li><strong>요소가 수직으로 쌓임</strong></li>
<li>div : 본절적으로 아무 것도 나타내지 않는, 컨텐츠 영역을 설정하는 용도, 부모 요소의 크기만큼 자동적으로 늘어남, 위아래/좌우 margin/padding 지정 가능<ul>
<li>자식요소로 블록 요소 사용 가능</li>
</ul>
</li>
</ul>
<h3 id="핵심-tag-정리">핵심 tag 정리</h3>
<blockquote>
<p>div (block)</p>
</blockquote>
<ul>
<li>특별한 의미가 없는 구분을 위한 요소</li>
</ul>
<blockquote>
<p>h1 (block)</p>
</blockquote>
<ul>
<li>제목을 의미하는 요소 (heading)</li>
<li>숫자 1~6 : 숫자가 작을수록 더 중요한 제목 정의</li>
<li>css 초기화하면 글자 크기 같음</li>
</ul>
<blockquote>
<p>p (block)</p>
</blockquote>
<ul>
<li>문장을 의미하는 요소 (paragraph)</li>
</ul>
<blockquote>
<p>img (inline)</p>
</blockquote>
<ul>
<li>이미지를 삽입하는 요소 </li>
<li>src, alt(엑박) =&gt; 필수 속성</li>
</ul>
<blockquote>
<p>ul (block)</p>
</blockquote>
<ul>
<li>순서가 필요없는 목록의 집합을 의미</li>
</ul>
<blockquote>
<p>ol (block)</p>
</blockquote>
<ul>
<li>순서가 필요한 목록의 집합을 의미</li>
</ul>
<blockquote>
<p>li (block)</p>
</blockquote>
<ul>
<li>목록 내 각 항목</li>
</ul>
<blockquote>
<p>a (inline)</p>
</blockquote>
<ul>
<li>다른/같은 페이지로 이동하는 하이퍼링크를 지정하는 요소</li>
<li>href : link url</li>
<li>target : 링크 url의 표시 위치<ul>
<li>target = &quot;_blank&quot; =&gt; 새탭에 표시</li>
</ul>
</li>
</ul>
<blockquote>
<p>span (inline)</p>
</blockquote>
<ul>
<li>특별한 의미가 없는 구분을 위한 요소</li>
</ul>
<blockquote>
<p>br (inline)</p>
</blockquote>
<ul>
<li>줄바꿈 요소</li>
</ul>
<blockquote>
<p>input (inline-block)</p>
</blockquote>
<ul>
<li>수평으로 쌓이지만, 가로/세로 좌우/위아래 여백 설정 가능</li>
<li>type 속성 : 입력받을 데이터 타입 결정</li>
<li>value 속성 : 미리 입력된 값</li>
<li>placeholder 속성 : 입력할 값의 힌트</li>
<li>disabled 속성 : 입력 요소 비활성화</li>
</ul>
<blockquote>
<p>label (inline)</p>
</blockquote>
<ul>
<li>라벨 가능 요소(input)의 제목</li>
<li>input type = &quot;checkbox&quot;<ul>
<li>checked 속성: 체크박스 입력 요소 체크됨</li>
</ul>
</li>
<li>input type = &quot;radio&quot;<ul>
<li>하나만 체크 가능</li>
<li>name 속성으로 여러 input 태그 그룸 묶기</li>
</ul>
</li>
</ul>
<blockquote>
<p>table (table 요소)</p>
</blockquote>
<ul>
<li>표 요소 행과 열의 집합 </li>
</ul>
<blockquote>
<p>tr (table 요소)</p>
</blockquote>
<ul>
<li>행을 지정하는 요소</li>
</ul>
<blockquote>
<p>td (table 요소)</p>
</blockquote>
<ul>
<li>열을 지정하는 요소</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[초격자 #4.]]></title>
            <link>https://velog.io/@ahn_danna/%EC%B4%88%EA%B2%A9%EC%9E%90-3</link>
            <guid>https://velog.io/@ahn_danna/%EC%B4%88%EA%B2%A9%EC%9E%90-3</guid>
            <pubDate>Sun, 18 Sep 2022 11:47:24 GMT</pubDate>
            <description><![CDATA[<h3 id="doctype-html">!DOCTYPE html</h3>
<blockquote>
<p>문서의 HTML 버전을 지정 
<strong>(HTML1, HTML2, HTML3, HTML4, XHTML, HTML5(표준))</strong></p>
</blockquote>
<blockquote>
<p><strong>DOCTYPE</strong>은 마크업 언어에서 문서 형식을 정의하며,
웹 브라우저가 어떤 HTML 문서의 해석 방식으로 
<strong>페이지를 이해하면 되는지를 알려주는 용도</strong></p>
</blockquote>
<h3 id="html-head-body">HTML, HEAD, BODY</h3>
<blockquote>
<p><strong>1. HTML 태그</strong> : 
<strong>문서의 전체 범위</strong></p>
</blockquote>
<blockquote>
<p><strong>2. HEAD 태그</strong> : 
<strong>문서의 정보를 나타내는 범위</strong>, 웹 페이지의 제목/설명/사용할 파일 위치/CSS 같은 웹페이지의 보이지 않는 정보를 작성</p>
</blockquote>
<blockquote>
<p><strong>3. BODY 태그</strong> : 
<strong>문서의 구조를 나타내는 범위</strong>, 사용자 화면을 통해 보여지는 로고, 헤더, 푸터, 네이게이션, 메뉴, 버튼, 이미지 같이 웹페이지의 보여지는 구조를 작성하는 범위</p>
</blockquote>
<h3 id="lang">lang</h3>
<blockquote>
<p>지정할 문서의 언어를 명시하는 HTML 속성
lang이 영어로 지정되어 있으면 브라우저에서 번역 기능 제공</p>
</blockquote>
<h3 id="cssjs-연결하기">CSS/JS 연결하기</h3>
<blockquote>
<ul>
<li><strong>CSS 연결</strong></li>
</ul>
</blockquote>
<pre><code>1. &lt;link rel=&quot;stylesheet&quot; href=&quot;./main.css&quot;/&gt; 
-------------------------------------------------------------------
link tag **=&gt; 외부 문서를 가져와 연결할 때 사용, 대부분 CSS 파일
-------------------------------------------------------------------
rel =&quot;&quot; : 가져올 문서와의 관계
&gt;&gt; stylesheet / icon ..
&gt;&gt; favion : 탭 화면에 뜨는 아이콘, favicon.png / favicon.ico
-------------------------------------------------------------------
href =&quot;&quot; : 가져올 문서의 경로
&gt;&gt; ./ =&gt; html 문서 파일 기준 주변에서 탐색
-------------------------------------------------------------------</code></pre><pre><code>2. &lt;style&gt; &lt;/style&gt;
-------------------------------------------------------------------
CSS를 HTML 문서 안에 작성하는 경우에 사용
</code></pre><blockquote>
<ul>
<li><strong>JS 연결</strong></li>
</ul>
</blockquote>
<pre><code>1. 외부에서 JS 파일을 가지고 오는 경우
&lt;script src=&quot;./main.js&quot;&gt;&lt;/script&gt;</code></pre><pre><code>2. 내부에서 JS를 작성하는 경우
&lt;script&gt; console.log(&quot;Hello World!&quot;) &lt;/script&gt;</code></pre><h3 id="meta-태그">meta 태그</h3>
<blockquote>
<p>HTML 문서의 제작자, 내용, 키워드 같은 여러 정보를 검색 엔진이나 브라우저에 제공</p>
</blockquote>
<pre><code>&lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;/&gt;
=&gt; 모바일 환경에서의 웹 페이지 가로 너비와, 처음 출력될 때 확대/축소 여부나 정도에 관한 정보
&lt;meta charset=&quot;UTF-8&quot;/&gt;
=&gt; 문자 인코딩 방식</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[초격차 #3.]]></title>
            <link>https://velog.io/@ahn_danna/%EC%B4%88%EA%B2%A9%EC%B0%A83</link>
            <guid>https://velog.io/@ahn_danna/%EC%B4%88%EA%B2%A9%EC%B0%A83</guid>
            <pubDate>Sun, 18 Sep 2022 08:54:29 GMT</pubDate>
            <description><![CDATA[<h3 id="vs-code-tips"><strong>VS code tips</strong></h3>
<ul>
<li>디렉토리 이름은 <strong>소문자로 관리하자</strong></li>
<li><strong>project</strong> 단위 =&gt; 폴더 개념</li>
<li>VS code에서도 파일 관리 가능</li>
<li><strong>.vscode</strong> : 현재 VS code 설정 정보가 들어있는 파일 (무시/삭제해도 됨)<ul>
<li>보통 이름이 .로 시작하는 파일이나 폴더는 숨김 전용</li>
</ul>
</li>
<li>브라우저 <strong>index.html</strong> 파일을 우선적으로 탐색 </li>
</ul>
<h3 id="vs-code-단축키"><strong>VS code 단축키</strong></h3>
<ul>
<li><strong>cm + o</strong> : open folder</li>
<li>*<em>cm + a *</em>: 전체 선택</li>
<li><strong>cm + shift + p</strong> : 명령창</li>
<li><strong>alt + cm + l</strong> : beautify 단축키 바인딩</li>
<li><strong>cm + alt + s</strong> : 프로젝트 전체 저장</li>
<li><strong>cm + + / cm + -</strong> : 브라우저에서 확대/축소</li>
<li><strong>cm + b</strong> : side bar 열고 닫기</li>
<li><strong>cm + p</strong> : 빠른 열기 (파일이나 기호 검색)</li>
<li><strong>cm + shift + p</strong> : 모든 명령 표시</li>
<li><strong>cm + w</strong> : 편집기 닫기</li>
<li><strong>cm + f</strong> : 찾기 </li>
<li><strong>cm + alt + f</strong> : 대체</li>
<li><strong>alt + up/down</strong> : 줄 이동</li>
<li><strong>alt + shift + up/down</strong> : 줄 위/아래에 해당 줄 복사</li>
<li><strong>shift + tab</strong> : 내어쓰기</li>
<li><strong>cm + shift + [</strong> : 전 편집기 열기 (좌측 창으로 이동)</li>
<li><strong>cm + backslash</strong> : 편집기 분할</li>
</ul>
<h3 id="vs-code-편리한-확장자"><strong>VS code 편리한 확장자</strong></h3>
<ul>
<li><strong>beautify</strong> : 줄 맞춤 자동화</li>
<li><strong>auto rename tag</strong> : tag 이름 변경 자동화</li>
<li><strong>live server</strong> : 임시로 로컬 서버 오픈</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[초격차 #2.]]></title>
            <link>https://velog.io/@ahn_danna/%EC%B4%88%EA%B2%A9%EC%9E%90-2</link>
            <guid>https://velog.io/@ahn_danna/%EC%B4%88%EA%B2%A9%EC%9E%90-2</guid>
            <pubDate>Sun, 18 Sep 2022 07:58:47 GMT</pubDate>
            <description><![CDATA[<h3 id="특수-문자-용어"><strong>특수 문자 용어</strong></h3>
<ul>
<li>` : 백틱(backtick), 그레이브(grave)</li>
<li>~ : 틸드(tilde)</li>
<li>! : exclamation mark</li>
<li>@ : at sign</li>
<li><h1 id="-shap-number-sign">: shap, number sign</h1>
</li>
<li>$ : dollar sign</li>
<li>% : percent sign</li>
<li>^ : 캐럿(caret) =&gt; 이상을 표현</li>
<li>&amp; : 엠퍼센드(ampersand)</li>
<li><ul>
<li>: 에스터리스크(asterisk)</li>
</ul>
</li>
<li><ul>
<li>: 하이픈(hyphen), 대시(dash)</li>
</ul>
</li>
<li>_ : 언더스코어(underscore), 로대시(low dash)</li>
<li>= : equals sign</li>
<li>&quot; : quotation mark</li>
<li>&#39; : apostrophe</li>
<li>: : colon</li>
<li>; : semicolon</li>
<li>, : comma</li>
<li>. : period, dot</li>
<li>? : question mark</li>
<li>/ : slash</li>
<li>| : vertical bar</li>
<li>\ : backslash</li>
<li>() : parenthesis</li>
<li>{} : brace</li>
<li>[] : bracket</li>
<li>&lt;&gt; : angle bracket</li>
</ul>
<h3 id="오픈-소스-라이선스"><strong>오픈 소스 라이선스</strong></h3>
<ul>
<li>오픈 소스 라이선스<ul>
<li>제품을 개발하는 과정에 필요한 소스 코드나 설계도를 누구나 접근해서 열람할 수  있게 공개하는 것</li>
<li>그럼에도 저작권이 있음 =&gt; 저작권을 잘 확인하자 !</li>
<li>개인 사용 가능/상업적 사용 가능 =&gt; 무료 사용 가능 저작권</li>
<li>apache license<ul>
<li>개인적/상업적 사용 가능, 배포/수정/특허 신청 가능</li>
</ul>
</li>
<li>mit license<ul>
<li>개인 소스에 이 라이선스를 사용하고 있다는 표시만 지켜주면, 나머지 사용에 대한 제약 없음</li>
<li>프로젝트 소스 코드에 외부에서 가져온 오픈소스의 라이선스 내용만 정확히 명시하면 충분</li>
<li>대부분 프로젝트에서는 자동으로 오픈 소스가 같이 빌드되기 때문에 따로 관리할 필요 없음</li>
</ul>
</li>
<li>bsd license<ul>
<li>mit와 동일</li>
</ul>
</li>
<li>beerware</li>
</ul>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[초격차 #1.]]></title>
            <link>https://velog.io/@ahn_danna/%EC%B4%88%EA%B2%A9%EC%B0%A8-1</link>
            <guid>https://velog.io/@ahn_danna/%EC%B4%88%EA%B2%A9%EC%B0%A8-1</guid>
            <pubDate>Sun, 18 Sep 2022 07:39:43 GMT</pubDate>
            <description><![CDATA[<h3 id="웹앱의-동작원리"><strong>웹앱의 동작원리</strong></h3>
<pre><code>주소창에 페이지 주소 입력  -- 최초 요청 --&gt; 서버 -- 최초 응답 (html) --&gt; 사용자
사용자 -- 추가 요청 --&gt; 서버 -- 추가 응답 (css, js) --&gt; 사용자</code></pre><h3 id="웹-표준과-브라우저"><strong>웹 표준과 브라우저</strong></h3>
<ul>
<li><p><strong>웹 표준</strong>
웹에서 사용되는 표준 기술이나 규칙, W3C의 표준화 제정 단계인 &#39;REC&#39;에 해당되는 기술</p>
</li>
<li><p><strong>크로스 브라우징</strong>
여러 브라우저에서 동일한 사용자 경험을 줄 수 있도록 제작하는 기술</p>
<h3 id="인터페이스-구조"><strong>인터페이스 구조</strong></h3>
</li>
<li><p><strong>창 (window)</strong></p>
</li>
<li><p><strong>탭 (tab)</strong></p>
</li>
<li><p><strong>주소창 (address bar)</strong></p>
</li>
<li><p><strong>뷰포트 (viewport)</strong>
렌더링되는 영역 (<em>렌더링</em> <em>: 브라우저의 뷰포트에 웹 사이트를 출력해내는 행위</em>)</p>
</li>
</ul>
<h3 id="웹-이미지"><strong>웹 이미지</strong></h3>
<ul>
<li><p><strong>비트맵 (bitmap)</strong></p>
<ul>
<li>픽셀이 모여 만들어진 정보의 집합 (raster image)</li>
<li><em>.jpeg, .gif, .png</em></li>
<li>정교하고 다양한 색상 자연스럽게 표현</li>
<li>확대, 축소 시 계단 현상, 품질 저하</li>
</ul>
</li>
<li><p><strong>벡터 (vector)</strong></p>
<ul>
<li>점, 선, 면의 위치, 색상 등 수학적 정보의 형태로 이루어진 이미지 </li>
<li><em>.svg</em></li>
<li>확대, 축소에서 자유로움, 용량 변화가 없음</li>
<li>정교한 이미지 표현이 어려움</li>
<li>material image, 로고, 아이콘 등에 사용</li>
</ul>
</li>
<li><p><strong>jpg(jpeg)</strong></p>
<ul>
<li>손실 압축 =&gt; 용량이 획기적으로 줆</li>
<li>이미지를 반복적으로 저장하면 손실이 크게 발생</li>
<li>표현할 수 있는 색상과 환경이 다양</li>
<li>용량이 작음</li>
</ul>
</li>
<li><p><strong>png</strong></p>
<ul>
<li>비손실 압축</li>
<li>용량이 비교적 큼</li>
<li>alpha channel 지원 =&gt; 투명도 지원</li>
<li>gif 대체 포맷</li>
</ul>
</li>
<li><p><strong>gif</strong></p>
<ul>
<li>비손실 압축</li>
<li>여러 장의 이미지를 한 개의 파일에 담을 수 있음 =&gt; 움짤, 애미메이션</li>
<li>8비트 색상만 지원 =&gt; 다양한 색상 표현 X</li>
</ul>
</li>
<li><p><strong>webp</strong></p>
<ul>
<li>jpg, png, gif를 모두 대체할 수 있는 구글이 개발한 이미지 포맷</li>
<li>완벽한 손실/비손실 압축 지원</li>
<li>gif와 같은 애니메이션 지원</li>
<li>alpha channel 지원 =&gt; 투명도 지원 (손실/비손실 모두)</li>
<li>IE 지원 불가 (하위호환성 check)</li>
</ul>
</li>
<li><p><strong>svg</strong></p>
<ul>
<li>마크업 언어 (html/xml) 기반의 벡터 그래픽을 표현하는 포맷</li>
<li>해상도의 영향에서 자유로움</li>
<li>css/js로 제어 가능</li>
<li>파일 및 코드 삽입 가능<ul>
<li>svg 이미지의 복잡한 코드를 css/js로 디테일하게 제어하기는 힘듦<ul>
<li>색상이나 일부 영역의 추가/제어 혹은 간단한 형태 생성 정도</li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
]]></description>
        </item>
    </channel>
</rss>