<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>개발일기장.py</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Sat, 10 May 2025 14:53:19 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>개발일기장.py</title>
            <url>https://velog.velcdn.com/images/paul_velog/profile/049ce427-afe9-4604-88b6-a52aa4fb50c2/image.webp</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. 개발일기장.py. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/paul_velog" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[Java] 배열<-> List 변환하기]]></title>
            <link>https://velog.io/@paul_velog/Java-%EB%B0%B0%EC%97%B4%EC%9D%84-List%EB%A1%9C-%EB%B3%80%ED%99%98%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@paul_velog/Java-%EB%B0%B0%EC%97%B4%EC%9D%84-List%EB%A1%9C-%EB%B3%80%ED%99%98%ED%95%98%EA%B8%B0</guid>
            <pubDate>Sat, 10 May 2025 14:53:19 GMT</pubDate>
            <description><![CDATA[<p>프로그래머스로 코딩테스트를 하다보면 종종 input 값으로 배열을 받는 경우가 있다.
<img src="https://velog.velcdn.com/images/paul_velog/post/1d5339c7-9f22-43e6-8519-c032703ee8dd/image.png" alt=""></p>
<p>배열은 길이가 정해져있고 원소값을 자유롭게 더하고 빼기 어렵다는 단점이 있기 때문에 특정 원소값을 빼거나 추가하는 문제에서는 리스트로 변환이 필요하다.</p>
<h3 id="for문을-이용한-간단한-방법">for문을 이용한 간단한 방법</h3>
<pre><code class="language-java">import java.util.*;

int[] arr = {1, 2, 3, 4, 5};
ArrayList&lt;Integer&gt; list = new ArrayList&lt;&gt;(); 

for (int i : arr) {
    list.add(i);
}</code></pre>
<p>리스트를 만들고 for문으로 기존 배열을 순회하며 모든 원소를 list에 추가해주는 방법이 있다.
<em>(조금 없어보이지만 밑에 단점들을 보면 이 방법이 제일 좋다..)</em></p>
<h3 id="arrays를-이용한-방법">Arrays를 이용한 방법</h3>
<p>여기서는 두가지 케이스에 따라 방법이 나뉜다.</p>
<ul>
<li>기존 배열의 타입이 기본형(primitive)일 경우</li>
<li>기존 배열의 타입이 래퍼 클래스(wrapper class)일 경우</li>
</ul>
<h4 id="wrapper-class-배열---list">Wrapper Class 배열 &lt;-&gt; List</h4>
<h5 id="배열---리스트">배열 -&gt; 리스트</h5>
<p>Wrapper 클래스인 배열은 asList() 메소드로 간단하게 변환 가능하다.</p>
<pre><code class="language-java">import java.util.*;

String[] strArr = {&quot;a&quot;, &quot;b&quot;, &quot;cd&quot;};
List&lt;String&gt; newArr = Arrays.asList(strArr);</code></pre>
<h5 id="리스트---배열">리스트 -&gt; 배열</h5>
<pre><code class="language-java">List&lt;String&gt; list = new ArrayList&lt;&gt;();
list.add(&quot;1&quot;);
list.add(&quot;2&quot;);
list.add(&quot;3&quot;);
// 방법1
String[] arr=list.toArray(String[]::new);
// 방법2
String[] arr2=list.toArray(new String[list.size()]);</code></pre>
<p>리스트의 배열화는 toArray() 메소드를 사용하는데 안에 new 생성자 함수로 빈 배열을 넣어준다.
두가지 방법이 있는데 첫번째 방법처럼 사용하면 list의 크기를 알아서 추론해준다.</p>
<h4 id="기본형-배열---list">기본형 배열 &lt;-&gt; List</h4>
<h5 id="배열---리스트-1">배열 -&gt; 리스트</h5>
<p>이번 내용에서 가장 중요한 부분이다. List는 래퍼클래스 타입만 담을 수 있기 때문에 기본형 배열을 List로 변환할 경우 <strong><em>모든 내용물을 변환해줘야 한다</em></strong>.</p>
<pre><code class="language-java">import java.util.*;
import java.util.stream.*; // Collectors

int[] arr = {1, 2, 3, 4, 5};
List&lt;Integer&gt; list = Arrays
            .stream(arr) // -&gt;IntStream
            .boxed() // -&gt;Stream&lt;Integer&gt;
            .collect(Collectors.toList()); // 담기</code></pre>
<p>stream의 boxed()는 IntStream과 같은 원시타입 스트림을 <code>Stream&lt;Integer&gt;</code>와 같이 래퍼클래스 스트림으로 변환해준다. (Collectors에 담기 위함)</p>
<h5 id="리스트---배열-1">리스트 -&gt; 배열</h5>
<pre><code class="language-java">// 리스트
List&lt;Integer&gt; list = IntStream.range(1, 6)
                .boxed()
                .collect(Collectors.toList());
// Integer 배열로 변환
Integer[] arr = list.toArray(Integer[]::new);
// int형 배열로 변환
int[] arr2 = list.stream()
            .mapToInt(i-&gt;i).toArray();</code></pre>
<p>Integer 배열을 int 배열로 변환할때는 mapToInt() 메소드로 하나씩 꺼내서 그대로 반환해주면 int형으로 변환해준다.</p>
<h3 id="주의사항">주의사항</h3>
<pre><code class="language-java">List&lt;Integer&gt; list1 = Arrays.asList(arr);
List&lt;Integer&gt; list2 = List.of(arr); //java9에 추가됨</code></pre>
<p>asList() 또는 List.of()로 변환된 리스트는 <strong><em>크기가 고정되에 추가 삭제가 안된다!</em></strong>...</p>
<p>따라서 동적으로 관리하려면 아래와 같이 생성자로 새로운 리스트를 만들어서 담아주어야한다.</p>
<pre><code class="language-java">List&lt;Integer&gt; notFixedList 
= new ArrayList&lt;Integer&gt;(Arrays.asList(arr));;</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[[HTML]유튜브 영상 첨부하기]]></title>
            <link>https://velog.io/@paul_velog/HTML%EC%9C%A0%ED%8A%9C%EB%B8%8C-%EC%98%81%EC%83%81-%EC%B2%A8%EB%B6%80%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@paul_velog/HTML%EC%9C%A0%ED%8A%9C%EB%B8%8C-%EC%98%81%EC%83%81-%EC%B2%A8%EB%B6%80%ED%95%98%EA%B8%B0</guid>
            <pubDate>Wed, 12 Feb 2025 17:42:16 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/paul_velog/post/a55ec3f0-6d9f-43b8-b691-1105ecb93863/image.png" alt=""></p>
<p>HTML을 학습하면서 video 태그로 동영상을 삽입해본적이 있는데요, 그렇다면 이런 유튜브 영상은 어떻게 삽입하는 걸까요?</p>
<p>방법은 의외로 간단합니다.</p>
<p>먼저 유튜브에서 원하는 영상을 선택합니다.
<img src="https://velog.velcdn.com/images/paul_velog/post/2414d73e-f850-4fb8-988c-060f1404b9a4/image.png" alt=""></p>
<p>선택한 영상에서 <code>공유</code>를 클릭합니다.
<img src="https://velog.velcdn.com/images/paul_velog/post/5bd7ecda-4bbc-4533-905e-2262c599d08e/image.png" alt=""></p>
<p>여기서 퍼가기를 클릭하면 아래와 같은 정보가 나옵니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/920b3c90-8b4f-4dfa-a1c0-b2bd231d00d4/image.png" alt=""></p>
<p>안에 있는 <code>&lt;iframe&gt;</code> 태그를 모두 복사해줍니다.</p>
<pre><code>&lt;div class=&quot;video-container&quot;&gt;
            &lt;iframe
              width=&quot;560&quot;
              height=&quot;315&quot;
              src=&quot;https://www.youtube.com/embed/rA2DrGkxMSY?si=9qtfZrhKzUp9lZ-e&quot;
              title=&quot;YouTube video player&quot;
              frameborder=&quot;0&quot;
              allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot;
              referrerpolicy=&quot;strict-origin-when-cross-origin&quot;
              allowfullscreen
            &gt;&lt;/iframe&gt;
          &lt;/div&gt;</code></pre><p>복사후 이렇게 div 태그나 다른 태그를  통해 삽입해줄 수 있습니다.</p>
<p>사실 다른 태그를 추가로 사용하지 않아도 영상이 그냥 삽입되는데요, 벨로그는 마크다운 양식이기 때문에 유튜브에서 복사한 <code>&lt;iframe&gt;</code> 태그를 그냥 복사만해줘도
!youtube[rA2DrGkxMSY?si=GXpudsqzSa8EbWY9] </p>
<p>이렇게 영상이 첨부됩니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[오류) yfinance 라이브러리 오류 (주가 데이터 불일치, 구버전 다운로드)]]></title>
            <link>https://velog.io/@paul_velog/%EC%98%A4%EB%A5%98-yfinance-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-%EC%98%A4%EB%A5%98-%EC%A3%BC%EA%B0%80-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%88%EC%9D%BC%EC%B9%98-%EA%B5%AC%EB%B2%84%EC%A0%84-%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C</link>
            <guid>https://velog.io/@paul_velog/%EC%98%A4%EB%A5%98-yfinance-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-%EC%98%A4%EB%A5%98-%EC%A3%BC%EA%B0%80-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EB%B6%88%EC%9D%BC%EC%B9%98-%EA%B5%AC%EB%B2%84%EC%A0%84-%EB%8B%A4%EC%9A%B4%EB%A1%9C%EB%93%9C</guid>
            <pubDate>Tue, 11 Feb 2025 19:14:17 GMT</pubDate>
            <description><![CDATA[<h3 id="문제점">문제점</h3>
<p>코랩에서 잘 사용하던 백테스트 시트가 갑자기 값이 이상하게 나왔다. 뭔가 이상해서 불러오는 주가 데이터를 확인해보니 시가,고가,종가 모두 비슷하지만 맞는 데이터가 없었다.
<img src="https://velog.velcdn.com/images/paul_velog/post/0efdcf6b-dabf-4c1a-83bd-a8739f18ccf0/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/619c2cf0-01fa-405b-851d-b482133de34a/image.png" alt=""></p>
<p>yahoo finance 공식 홈페이지의 주가와 비교해본 결과 2024년도 데이터 중 맞는게 거의 하나도 없었다.</p>
<p>혹시나 yahoo finance 공홈이 잘못됐다 싶어서 다른 증권사 데이터도 찾아봤지만 역시 yfinance 라이브러리에 문제가 있었다.. (이건 좀 심한데)</p>
<p>그래서 좀 더 신뢰성 있는 라이브러리로 바꾸려고 했지만 코드를 너무 많이 수정해야 했기에 다른 방법을 찾아보았다.</p>
<h3 id="해결책">해결책</h3>
<p>해결책은 의외로 간단했다. 문제가 되는 버전을 삭제하고 내가 코드를 작성할때 썼던 버전을 다운로드하면 된다. </p>
<pre><code class="language-py">!pip uninstall yfinance -y # 기존 버전 삭제
!pip install yfinance==0.2.48 # 0.2.48 버전 설치
import yfinance as yf 
print(yf.__version__) # 버전확인</code></pre>
<p>물론 VS Code 같은 로컬환경에서 라이브러리를 설치해서 쓴다면 문제가 없겠지만, 나처럼 코랩(Colab) 환경에서 사용한다면 매번 새 버전이 자동으로 업데이트 되기 때문에 곤란한 상황을 겪을 수 있다.</p>
<h4 id="깨달은점">깨달은점</h4>
<p>보통 라이브러리도 제공해주고 깃허브랑 연동이 되기 때문에 코랩 환경을 많이 사용한다.</p>
<p>지금 사용하는 백테스트 시트는 yfinance 버전 업데이트 때문에 사용한지 1년도 안되서 4번 정도 오류가 발생해서 코드를 수정하였다.</p>
<p>앞으로 코랩에서 작업할때는 라이브러리의 버전을 주의해야겠다. 특히나 버전이 자주 업데이트 되는 라이브러리는 필수적으로 버전을 주석으로 기입해놓고 문제가 발생하면 오늘처럼 수정해야겠다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTML 과 친해지기 (11)]]></title>
            <link>https://velog.io/@paul_velog/HTML%EA%B3%BC-%EC%B9%9C%ED%95%B4%EC%A7%80%EA%B8%B011</link>
            <guid>https://velog.io/@paul_velog/HTML%EA%B3%BC-%EC%B9%9C%ED%95%B4%EC%A7%80%EA%B8%B011</guid>
            <pubDate>Tue, 11 Feb 2025 11:21:40 GMT</pubDate>
            <description><![CDATA[<h3 id="폼form-태그2---selectcheckboxradio">폼(Form) 태그(2) - select,checkbox,radio</h3>
<h4 id="checkbox와-radio-버튼">checkbox와 radio 버튼</h4>
<ul>
<li>checkbox: 여러개의 체크박스 중 2개 이상 선택할 수 있습니다. </li>
</ul>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/ae53b85a-819d-4f48-9d44-2927d7a29d67/image.png" alt=""></p>
<pre><code>&lt;ul&gt;
          &lt;li&gt;
            &lt;label for=&quot;red&quot;&gt;빨강&lt;/label&gt;
            &lt;input type=&quot;checkbox&quot; id=&quot;red&quot; value=&quot;red&quot; /&gt;
          &lt;/li&gt;
          &lt;li&gt;
            &lt;label for=&quot;blue&quot;&gt;파랑&lt;/label&gt;
            &lt;input type=&quot;checkbox&quot; id=&quot;blue&quot; value=&quot;blue&quot; /&gt;
          &lt;/li&gt;
          &lt;li&gt;
            &lt;label for=&quot;green&quot;&gt;초록&lt;/label&gt;
            &lt;input type=&quot;checkbox&quot; id=&quot;green&quot; value=&quot;green&quot; /&gt;
          &lt;/li&gt;
          &lt;li&gt;
            &lt;label for=&quot;yellow&quot;&gt;노랑&lt;/label&gt;
            &lt;input type=&quot;checkbox&quot; id=&quot;yellow&quot; value=&quot;yellow&quot; /&gt;
          &lt;/li&gt;
        &lt;/ul&gt;</code></pre><p><code>input</code>태그의 type에 <code>checkbox</code>를 지정해주면 됩니다. 체크박스 선택시 <code>value</code>로 지정한 값이 서버로 전송됩니다.</p>
<ul>
<li>radio: 여러개의 라디오 항목 중 1개를 선택할 수 있습니다. </li>
</ul>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/8df6f93d-2690-47b8-8fde-3d394b8afa91/image.png" alt=""></p>
<pre><code>&lt;ul&gt;
          &lt;li&gt;
            &lt;label for=&quot;free&quot;&gt;무료&lt;/label&gt;
            &lt;input type=&quot;radio&quot; id=&quot;free&quot; value=&quot;free&quot; name=&quot;delivery&quot; /&gt;
          &lt;/li&gt;
          &lt;li&gt;
            &lt;label for=&quot;pay&quot;&gt;유료&lt;/label&gt;
            &lt;input type=&quot;radio&quot; id=&quot;pay&quot; value=&quot;pay&quot; name=&quot;delivery&quot; /&gt;
          &lt;/li&gt;
        &lt;/ul&gt;</code></pre><p>여러개 중 하나를 선택하도록 하려면 그 항목의 <code>name</code>속성에 같은 값을 기입해줍니다. 라디오박스 역시 value속성에 기입된 값이 서버로 전송됩니다.</p>
<h4 id="textarea-태그">textarea 태그</h4>
<ul>
<li><code>&lt;textarea&gt;</code>: 여러줄의 데이터를 입력받을 수 있습니다.</li>
</ul>
<pre><code>&lt;textarea name=&quot;&quot; id=&quot;&quot; cols=&quot;40&quot; rows=&quot;10&quot;&gt;
&lt;/textarea&gt;</code></pre><p><img src="https://velog.velcdn.com/images/paul_velog/post/ad1dda93-80a6-4504-bd8f-9ad5d18a9f4a/image.png" alt=""></p>
<p><code>cols</code>와 <code>rows</code> 속성으로 텍스트 영역의 크기를 조절할 수 있습니다.</p>
<h4 id="select--option-태그">Select &amp; Option 태그</h4>
<p><code>&lt;select&gt;</code> 태그는 옵션 메뉴를 제공합니다. <code>&lt;option&gt;</code> 태그로 각 항목을 나타내며 <code>&lt;select&gt;</code> 태그는 <code>&lt;option&gt;</code> 태그를 감싸줍니다.</p>
<pre><code>&lt;select name=&quot;goods&quot; id=&quot;goods&quot;&gt;
              &lt;option value=&quot;apple_10kg&quot;&gt;사과(10kg)&lt;/option&gt;
              &lt;option value=&quot;apple_20kg&quot;&gt;사과(20kg)&lt;/option&gt;
              &lt;option value=&quot;apple_30kg&quot;&gt;사과(30kg)&lt;/option&gt;
              &lt;option value=&quot;apple_40kg&quot;&gt;사과(40kg)&lt;/option&gt;
              &lt;option value=&quot;apple_50kg&quot;&gt;사과(50kg)&lt;/option&gt;
            &lt;/select&gt;</code></pre><p><img src="https://velog.velcdn.com/images/paul_velog/post/bb8b454c-6a52-4d19-97f7-6a1284ea00ce/image.png" alt=""></p>
<h4 id="datalist">datalist</h4>
<ul>
<li><code>&lt;datalist&gt;</code>: 추천하는 선택지를 담는 <code>&lt;option&gt;</code> 여럿을 담습니다. 보통 input 태그와 함께 사용하며 <code>input 태그의 list</code> 속성과 <code>option 태그의 id</code> 속성을 일치시켜줘야합니다.</li>
</ul>
<pre><code>&lt;li&gt;
            &lt;label for=&quot;flavor-choice&quot;&gt;맛을 선택하세요.&lt;/label&gt;
            &lt;input list=&quot;flavors&quot; id=&quot;flavor-choice&quot; name=&quot;flavor-choice&quot; /&gt;
            &lt;datalist id=&quot;flavors&quot;&gt;
              &lt;option value=&quot;chocolate&quot;&gt;&lt;/option&gt;
              &lt;option value=&quot;strawberry&quot;&gt;&lt;/option&gt;
              &lt;option value=&quot;blueberry&quot;&gt;&lt;/option&gt;
              &lt;option value=&quot;mint&quot;&gt;&lt;/option&gt;
            &lt;/datalist&gt;
          &lt;/li&gt;</code></pre><p><img src="https://velog.velcdn.com/images/paul_velog/post/0d8bdde4-fc2d-4729-ba72-42720edfde61/image.png" alt=""></p>
<h4 id="button">Button</h4>
<p>-<code>&lt;button&gt;</code>: 요소는 클릭 가능한 버튼을 나타냅니다. <code>&lt;form&gt;</code> 내부를 포함하여 버튼이 필요한 어디에나 배치할 수 있습니다.</p>
<pre><code>&lt;button type=&quot;submit&quot;&gt;제출하기&lt;/button&gt;
&lt;button type=&quot;reset&quot;&gt;리셋하기&lt;/button&gt;
&lt;button type=&quot;button&quot; onclick=&quot;alert(&#39;Hello World!&#39;)&quot;&gt;버튼&lt;/button&gt;</code></pre><p><code>type</code> 속성은 버튼의 행동 양식을 결정합니다.</p>
<p>-<code>&lt;submit&gt;</code>: 버튼이 서버로 양식 데이터를 제출합니다. <code>form</code> 태그의 <code>action</code> 속성에 기입된 uri로 해당 양식을 제출합니다. (기본값)
-<code>&lt;reset&gt;</code>: 모든 입력 필드를 초기값으로 되돌립니다.
-<code>&lt;button&gt;</code>: 기본 행동이 없으며 주로 클릭 후 자바스크립트 측 코드를 명령할 때 사용합니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/639561fd-1d12-4669-8b58-a06657ddcb43/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTML 과 친해지기 (10)
]]></title>
            <link>https://velog.io/@paul_velog/HTML-%EA%B3%BC-%EC%B9%9C%ED%95%B4%EC%A7%80%EA%B8%B0-10</link>
            <guid>https://velog.io/@paul_velog/HTML-%EA%B3%BC-%EC%B9%9C%ED%95%B4%EC%A7%80%EA%B8%B0-10</guid>
            <pubDate>Mon, 10 Feb 2025 06:23:12 GMT</pubDate>
            <description><![CDATA[<h3 id="폼form-태그1---input">폼(Form) 태그(1) - input</h3>
<p>HTML에서의 폼(Form)은 사용자의 정보를 입력받기 위해 사용됩니다. </p>
<p>예를 들어 회원가입 페이지에서 이름,아이디,비밀번호,주소 등등 데이터를 입력받도록 형식이 지정되어 있는데요, 
<img src="https://velog.velcdn.com/images/paul_velog/post/19de729f-ad76-445e-9dd9-f0cc18dc9505/image.png" alt=""></p>
<p>이때 <strong>입력받는 데이터들의 묶음을 폼(Form)</strong>, 그리고 데이터를 폼 데이터(Form Data) 또는 필드(Field)라고 합니다.</p>
<h4 id="action-method-속성">action, method 속성</h4>
<p>보통 폼 태그는 사용자로부터 입력받은 데이터를 서버와 통신할때 사용합니다. 따라서 action 속성과 method 속성이 자주 사용됩니다.</p>
<ul>
<li><code>action</code>: 양식 데이터를 처리할 서버 프로그램 URI</li>
<li><code>method</code>: 양식을 제출할때 사용할 HTTP 메서드</li>
</ul>
<h3 id="label-태그-input-태그">label 태그, Input 태그</h3>
<h4 id="input-태그"><code>&lt;input&gt;</code> 태그</h4>
<p>폼 태그에서 데이터를 입력받을 수 있습니다. type 속성을 통해 다양한 방법으로 데이터를 입력받을 수 있습니다.</p>
<p>type 속성에는 다양한 타입을 지정할 수 있으며, HTML5에서는 text 필드가 데이터 용도에 맞게 사용할 수 있도록 다양한 타입이 추가되었습니다.</p>
<ul>
<li><code>email</code>: email 데이터를 받기 위해 사용됩니다.(이메일 유효성 검증)</li>
<li><code>tel</code>: 전화번호 데이터를 받기 위해 사용됩니다.(모바일 접근시 키패드가 다름)</li>
</ul>
<p>이외에도 다양한 type 속성이 있습니다.</p>
<h4 id="label-태그"><code>&lt;label&gt;</code> 태그</h4>
<p>label 태그는 입력받는 필드를 설명할때 사용됩니다.</p>
<p>사용방법은 label 태그 하위에 input 태그를 위치시키거나, id와 for 속성을 사용하여 input 태그와 연결할 수 있습니다.</p>
<pre><code>&lt;!-- label 태그 하위 --&gt;
&lt;label&gt;
이름:
&lt;input type=&quot;text&quot; id=&quot;name&quot;&gt;
&lt;/label&gt;


&lt;!-- for와 id 속성으로 연결 --&gt;
&lt;label for=&quot;name&quot;&gt;
이름:
&lt;/label&gt;
&lt;input type=&quot;text&quot; id=&quot;name&quot;&gt;
</code></pre><p><img src="https://velog.velcdn.com/images/paul_velog/post/5c2d4e61-a7f3-47b0-9284-60fdcc43359b/image.png" alt=""></p>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
  &lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot; /&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot; /&gt;
    &lt;title&gt;Form Input&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;form action=&quot;&quot;&gt;
      &lt;fieldset&gt;
        &lt;legend&gt;Input tag&lt;/legend&gt;
        &lt;ul&gt;
          &lt;li&gt;
            &lt;label for=&quot;text&quot;&gt;Text&lt;/label&gt;
            &lt;input type=&quot;text&quot; id=&quot;text&quot; required /&gt;
          &lt;/li&gt;
          &lt;li&gt;
            &lt;label for=&quot;email&quot;&gt;email&lt;/label&gt;
            &lt;input type=&quot;email&quot; id=&quot;email&quot; /&gt;
          &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/fieldset&gt;
      &lt;input type=&quot;submit&quot; value=&quot;제출하기&quot; /&gt;
    &lt;/form&gt;
  &lt;/body&gt;
&lt;/html&gt;
</code></pre><p>폼 태그를 통해 텍스트와 이메일을 받을 수 있는 폼을 만들어 보았습니다.</p>
<h4 id="required-속성">required 속성</h4>
<p>input 태그의 required 속성은 해당 데이터를 필수값으로 받도록 만들어줍니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/c6274f01-d5ab-4b38-bcc8-e126d7856b74/image.png" alt=""></p>
<p>현재 Text 부분이 require 속성으로 지정되어있기 때문에 해당 필드를 채우지않고 제출할 시 &quot;이 입력란을 작성하세요.&quot; 와 같은 문구와 함께 폼이 제출되지 않습니다.</p>
<h4 id="email-타입">email 타입</h4>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/e0511eba-6490-4edd-be89-5649c7ca5bd0/image.png" alt=""></p>
<p>마찬가지로 email 타입은 서버로 데이터를 전송하기 전에 해당 데이터가 이메일 형식에 맞는지 유효성 체크를 해줍니다.</p>
<h4 id="기타-타입">기타 타입</h4>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/b7dd4ceb-fd45-4923-958e-b28aab433c85/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/0486a345-27b6-4617-84db-c1c933cb0ebf/image.png" alt=""></p>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
  &lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot; /&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot; /&gt;
    &lt;title&gt;Form Input&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;form action=&quot;&quot;&gt;
      &lt;fieldset&gt;
        &lt;legend&gt;Input tag&lt;/legend&gt;
        &lt;ul&gt;
          &lt;li&gt;
            &lt;label for=&quot;text&quot;&gt;Text&lt;/label&gt;
            &lt;input type=&quot;text&quot; id=&quot;text&quot; required /&gt;
          &lt;/li&gt;
          &lt;li&gt;
            &lt;label for=&quot;email&quot;&gt;email&lt;/label&gt;
            &lt;input type=&quot;email&quot; id=&quot;email&quot; /&gt;
          &lt;/li&gt;
          &lt;li&gt;
            &lt;label for=&quot;tel&quot;&gt;전화번호&lt;/label&gt;
            &lt;input type=&quot;tel&quot; id=&quot;tel&quot; /&gt;
          &lt;/li&gt;
          &lt;li&gt;
            &lt;label for=&quot;url&quot;&gt;url&lt;/label&gt;
            &lt;input type=&quot;url&quot; id=&quot;url&quot; /&gt;
          &lt;/li&gt;
          &lt;li&gt;
            &lt;label for=&quot;number&quot;&gt;number&lt;/label&gt;
            &lt;input type=&quot;number&quot; id=&quot;number&quot; min=&quot;5&quot; max=&quot;10&quot; /&gt;
          &lt;/li&gt;
          &lt;li&gt;
            &lt;label for=&quot;range&quot;&gt;range&lt;/label&gt;
            &lt;input type=&quot;range&quot; id=&quot;range&quot; /&gt;
          &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/fieldset&gt;
      &lt;fieldset&gt;
        &lt;legend&gt;날짜관련&lt;/legend&gt;
        &lt;ul&gt;
          &lt;li&gt;
            &lt;label for=&quot;date&quot;&gt;date&lt;/label&gt;
            &lt;input type=&quot;date&quot; id=&quot;date&quot; min=&quot;2025-01-01&quot; max=&quot;2025-02-01&quot; /&gt;
          &lt;/li&gt;
          &lt;li&gt;
            &lt;label for=&quot;month&quot;&gt;month&lt;/label&gt;
            &lt;input type=&quot;month&quot; id=&quot;month&quot; /&gt;
          &lt;/li&gt;
          &lt;li&gt;
            &lt;label for=&quot;week&quot;&gt;week&lt;/label&gt;
            &lt;input type=&quot;week&quot; id=&quot;week&quot; /&gt;
          &lt;/li&gt;
          &lt;li&gt;
            &lt;label for=&quot;time&quot;&gt;time&lt;/label&gt;
            &lt;input type=&quot;time&quot; id=&quot;time&quot; /&gt;
          &lt;/li&gt;
        &lt;/ul&gt;
      &lt;/fieldset&gt;
      &lt;fieldset&gt;
        &lt;legend&gt;그 외&lt;/legend&gt;
        &lt;ul&gt;
          &lt;li&gt;&lt;input type=&quot;file&quot; multiple /&gt;&lt;/li&gt;
          &lt;li&gt;&lt;input type=&quot;hidden&quot; /&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/fieldset&gt;
      &lt;input type=&quot;submit&quot; value=&quot;제출하기&quot; /&gt;
    &lt;/form&gt;
  &lt;/body&gt;
&lt;/html&gt;
</code></pre><p>Text나 email 타입 외에도 다양한 타입이 존재합니다. 각 타입은 해당 타입에 맞게 데이터를 받을 수 있도록 유효성을 체크해주기 때문에 <code>input</code> 태그 생성시에 <code>type</code> 속성을 잘 고려해서 만들어줘야 합니다.</p>
<h4 id="참고-input-속성값">참고: input 속성값</h4>
<p> -<code>required</code>: 입력값이 필수임을 명시.
-<code>readonly</code>: 필드를 읽기전용으로 만들 수 있음.
-<code>disabled</code>: 해당 필드를 비활성화 시켜 서버로 데이터를 전송하지 않음.
-<code>autofocus</code>: 초기에 해당 필드에 커서를 위치 시킬 수 있음.
-<code>placeholder</code>: 입력 필드가 비어있을때 나타나는 설명문구 삽입.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTML 과 친해지기 (9)]]></title>
            <link>https://velog.io/@paul_velog/HTML-%EA%B3%BC-%EC%B9%9C%ED%95%B4%EC%A7%80%EA%B8%B0-9</link>
            <guid>https://velog.io/@paul_velog/HTML-%EA%B3%BC-%EC%B9%9C%ED%95%B4%EC%A7%80%EA%B8%B0-9</guid>
            <pubDate>Mon, 10 Feb 2025 01:15:18 GMT</pubDate>
            <description><![CDATA[<h3 id="a태그">a태그</h3>
<p><code>&lt;a&gt;</code> 태그는 다른 페이지나 같은 페이지의 특정위치,파일,이메일 주소와 그 외 다른 url로 연결할 수 있는 <strong>하이퍼링크</strong>를 생성합니다.</p>
<pre><code>&lt;a href=&quot;https://www.naver.com&quot;&gt;네이버&lt;/a&gt; 와
&lt;a href=&quot;https://www.google.com&quot;&gt;구글&lt;/a&gt;
은 포털사이트이다.</code></pre><p><img src="https://velog.velcdn.com/images/paul_velog/post/301806ce-4d1e-4145-9881-38c2d772165d/image.png" alt=""></p>
<p>네이버와 구글을 <code>&lt;a&gt;</code> 태그로 감싼 후 <code>href</code> 속성에 각각의 주소를 넣어 하이퍼링크를 생성하였습니다.</p>
<p>이제 <code>네이버</code>와 <code>구글</code> 문구를 클릭하면 각각에 연결된 사이트로 이동됩니다.</p>
<h4 id="target-속성">target 속성</h4>
<pre><code>&lt;a href=&quot;https://www.naver.com&quot; target=&quot;_blank&quot;&gt;
네이버&lt;/a&gt;</code></pre><p>자주 사용하는 속성으로 <code>target</code> 속성이 있습니다. 이 속성값을 <code>_blank</code>로 지정해주면 해당 *<em>하이퍼링크로 이동할때 새 창을 띄워줍니다. *</em></p>
<h4 id="페이지-내-이동">페이지 내 이동</h4>
<p>페이지 내 이동은 <code>href</code> 속성에 <code>#아이디</code>로 이동할 수 있습니다.</p>
<pre><code>&lt;a href=&quot;#아이디&quot;&gt;하이퍼링크&lt;/a&gt;</code></pre><p><code>div</code> 태그를 통해 30개의 블록을 생성한 후 17번째 블록으로 이동해보겠습니다.</p>
<pre><code>&lt;div id=&quot;block17&quot;&gt;17&lt;/div&gt;</code></pre><p>먼저 17번째 블록에 <code>id</code> 속성에 사용할 아이디를 명시합니다.</p>
<pre><code>&lt;a href=&quot;#block17&quot;&gt;17번째 블록으로 이동하기&lt;/a&gt;</code></pre><p>이제 하이퍼링크를 생성하고 <code>href</code> 속성에 <code>#아이디</code>를 명시합니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/c8389138-4c2f-4e2d-9a9a-9b8802a6ed13/image.png" alt=""></p>
<p>이제 하이퍼링크를 클릭하면 해당 아이디로 이동하게 됩니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/aeb1c56c-4384-49ae-ae02-c17553b15692/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTML 과 친해지기 (8)
]]></title>
            <link>https://velog.io/@paul_velog/HTML-%EA%B3%BC-%EC%B9%9C%ED%95%B4%EC%A7%80%EA%B8%B0-8</link>
            <guid>https://velog.io/@paul_velog/HTML-%EA%B3%BC-%EC%B9%9C%ED%95%B4%EC%A7%80%EA%B8%B0-8</guid>
            <pubDate>Mon, 10 Feb 2025 00:31:31 GMT</pubDate>
            <description><![CDATA[<h3 id="이미지--멀티미디어-태그">이미지 &amp; 멀티미디어 태그</h3>
<h4 id="img-태그"><code>&lt;img&gt;</code> 태그</h4>
<p><code>&lt;img&gt;</code> 태그는 HTML 문서에 이미지를 넣습니다.</p>
<p>ex)</p>
<pre><code>&lt;img src=&quot;images/apple.jpg&quot; alt=&quot;사과&quot;&gt;</code></pre><ul>
<li><code>src</code>: 이미지 태그에서 src는 필수값이며 사용할 이미지의 경로를 통해 이미지를 불러옵니다.</li>
<li><code>alt</code>: 필수 요소는 아니지만 사용자에게 이미지를 설명하는 역할을 합니다. 문제가 발생하여 이미지를 표시할 수 없을때 해당 이미지가 어떤 이미지인지 설명할 수 있습니다.</li>
<li><code>height</code>: 픽셀단위 이미지의 고유 크기.(정수)</li>
<li><code>width</code>: 이미지의 픽셀 기준 고유 너비.(정수)</li>
</ul>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/d27052db-95e8-4b6f-881c-8076aca00cfa/image.png" alt=""></p>
<p>이미지 태그로 간단한 실습을 해보겠습니다. 먼저 태그에 사용할 이미지를 다운받기 위해 pixabay 라는 사이트를 이용해보겠습니다.</p>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
  &lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot; /&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot; /&gt;
    &lt;title&gt;이미지 태그&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;h2&gt;이미지 태그&lt;/h2&gt;
    &lt;img src=&quot;../mountains.jpg&quot; alt=&quot;산&quot; /&gt;
  &lt;/body&gt;
&lt;/html&gt;
</code></pre><p>이제 다운받은 이미지를 폴더에 넣어주고 생성한 이미지 태그에 경로와 alt를 입력해줍니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/58fd263e-e375-4459-bdad-90ae5a38ffb0/image.png" alt=""></p>
<p>다운받은 이미지를 잘 불러오는것을 확인할 수 있습니다.</p>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
  &lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot; /&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot; /&gt;
    &lt;title&gt;이미지 태그&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;h2&gt;이미지 태그&lt;/h2&gt;
    &lt;img src=&quot;&quot; alt=&quot;산&quot; /&gt;
  &lt;/body&gt;
&lt;/html&gt;
</code></pre><p><img src="https://velog.velcdn.com/images/paul_velog/post/d027fb19-b9a7-46a5-adf3-a8880186d73e/image.png" alt=""></p>
<p>src의 경로를 한번 지워봤습니다. 이미지 아이콘 옆에 alt에 명시한 설명이 출력됩니다.</p>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
  &lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot; /&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot; /&gt;
    &lt;title&gt;이미지 태그&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;h2&gt;이미지 태그&lt;/h2&gt;
    &lt;img width=&quot;150&quot; src=&quot;../mountains.jpg&quot; alt=&quot;산&quot; /&gt;
    &lt;img height=&quot;200&quot; src=&quot;../mountains.jpg&quot; alt=&quot;산&quot; /&gt;
    &lt;img width=&quot;100&quot; height=&quot;100&quot; src=&quot;../mountains.jpg&quot; alt=&quot;산&quot; /&gt;
  &lt;/body&gt;
&lt;/html&gt;
</code></pre><p><img src="https://velog.velcdn.com/images/paul_velog/post/bfbb22d3-b6d4-42f9-9a3b-8df6e1a5658b/image.png" alt=""></p>
<p>width와 height를 통해 이미지의 크기를 조정할 수 있습니다. 픽셀(px) 단위로 명시하지 않고 정수값으로 크기를 명시해줍니다.</p>
<h4 id="오디오비디오-태그">오디오/비디오 태그</h4>
<p><code>&lt;audio&gt;</code> 태그와 <code>&lt;video&gt;</code> 태그를 통해서 음성파일과 영상을 첨부할 수 있습니다. 태그 사용방식은 이미지 태그와 유사합니다.</p>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
  &lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot; /&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot; /&gt;
    &lt;title&gt;오디오/비디오&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;h2&gt;오디오 태그&lt;/h2&gt;
    &lt;audio src=&quot;sound.mp3&quot; controls&gt;&lt;/audio&gt;
    &lt;h2&gt;비디오 태그&lt;/h2&gt;
    &lt;video width=&quot;300&quot; src=&quot;video.mov&quot; type=&quot;video/mov&quot; controls&gt;&lt;/video&gt;
  &lt;/body&gt;
&lt;/html&gt;</code></pre><p><img src="https://velog.velcdn.com/images/paul_velog/post/fdbcb18d-21fb-4ba1-b9ba-a26e40104034/image.png" alt=""></p>
<h4 id="오디오비디오-태그-속성">오디오/비디오 태그 속성</h4>
<ul>
<li><code>controls</code>: 플레이어 화면에 컨트롤바(재생막대)를 표시합니다.</li>
<li><code>autoplay</code>: 오디오나 비디오를 자동으로 실행합니다.</li>
<li><code>loop</code>: 오디오나 비디오를 반복 재생합니다.</li>
<li><code>muted</code>: 오디오나 비디오의 소리를 제거합니다.</li>
<li><code>preload</code>: 페이지를 불러올 때 오디오/비디오를 어떻게 로딩할지 지정합니다. 기본적으로 <code>preload=&quot;auto&quot;</code> 가 적용됩니다.(auto,metadata,none 지정 가능)</li>
<li><code>width</code> <code>height</code>: 너비와 높이를 조절합니다. 너비와 높이 중 하나만 입력해주면 알아서 비율을 맞춰줍니다.</li>
<li><code>poster=&quot;파일이름&quot;</code>: 비디오 태그에서 사용하는 속성으로, 비디오가 재생되기 전까지 화면에서 사용할 포스터 이미지를 지정합니다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTML 과 친해지기 (7)]]></title>
            <link>https://velog.io/@paul_velog/HTML-%EA%B3%BC-%EC%B9%9C%ED%95%B4%EC%A7%80%EA%B8%B0-7</link>
            <guid>https://velog.io/@paul_velog/HTML-%EA%B3%BC-%EC%B9%9C%ED%95%B4%EC%A7%80%EA%B8%B0-7</guid>
            <pubDate>Sun, 09 Feb 2025 12:21:22 GMT</pubDate>
            <description><![CDATA[<h3 id="block-element-vs-inline-element">Block Element <code>vs</code> Inline Element</h3>
<p>이번시간에는 Block element와 Inline element에 대해 알아보도록 하겠습니다.</p>
<h4 id="div-태그와-span-태그">div 태그와 span 태그</h4>
<p>Block 레벨 요소의 대표적인 케이스로 <code>&lt;div&gt;</code> 태그가 있으며, Inline 레벨 요소의 대표적인 케이스로는 <code>&lt;span&gt;</code> 태그가 있습니다. 두 태그를 통해서 Block 레벨 요소와 Inline 레벨 요소의 차이점을 비교해보겠습니다.</p>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
  &lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot; /&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot; /&gt;
    &lt;title&gt;Document&lt;/title&gt;
    &lt;style&gt;
      div {
        background-color: aquamarine;
      }
      span {
        background-color: brown;
      }
    &lt;/style&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;div&gt;div 태그는 Block Element이며 글자수에 관계없이 한 블록을 차지함.&lt;/div&gt;
    &lt;span&gt; span 태그는 Inline Element이며 글자수만큼 공간을 차지함. &lt;/span&gt;
  &lt;/body&gt;
&lt;/html&gt;
</code></pre><p><img src="https://velog.velcdn.com/images/paul_velog/post/a34459d0-e7bc-4328-b9a0-c813d5dd6625/image.png" alt=""></p>
<p>블록과 인라인의 차이가 보이시나요? div 태그는 글자수에 상관없이 한 블록을 차지하는 반면, span 태그는 글자수에 맞게 공간을 사용합니다.</p>
<p>또 다른 차이점으로는 너비와 높이 조절이 블록은 가능하나 인라인은 불가능하다는 차이점이 있습니다.</p>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
  &lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot; /&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot; /&gt;
    &lt;title&gt;Document&lt;/title&gt;
    &lt;style&gt;
      div {
        background-color: aqua;
        width: 100px;
        height: 100px;
        border: 1px solid blue;
      }
      span {
        background-color: red;
        width: 100px;
        height: 100px;
        border: 1px solid blue;
      }
    &lt;/style&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;div&gt;1&lt;/div&gt;
    &lt;div&gt;2&lt;/div&gt;
    &lt;div&gt;3&lt;/div&gt;
    &lt;span&gt;1&lt;/span&gt;&lt;span&gt;2&lt;/span&gt;&lt;span&gt;3&lt;/span&gt;
  &lt;/body&gt;
&lt;/html&gt;
</code></pre><p>블록 요소인 div 태그는 CSS에서 width와 height을 통해 너비와 높이를 조절할 수 있는데요, 반면 span 태그는 너비와 높이를 조절해도 그대로인것을 알 수 있습니다. 즉 인라인 요소는 텍스트에 맞게 크기가 조절되기 때문에 CSS로 너비와 높이를 조절할 수 없습니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/690b6b89-ed18-41f8-979a-8b32c664ec98/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTML 과 친해지기 (6)]]></title>
            <link>https://velog.io/@paul_velog/HTML-%EA%B3%BC-%EC%B9%9C%ED%95%B4%EC%A7%80%EA%B8%B0-6</link>
            <guid>https://velog.io/@paul_velog/HTML-%EA%B3%BC-%EC%B9%9C%ED%95%B4%EC%A7%80%EA%B8%B0-6</guid>
            <pubDate>Fri, 07 Feb 2025 16:52:38 GMT</pubDate>
            <description><![CDATA[<h2 id="sementic-태그">Sementic 태그</h2>
<p>이번시간에는 Sementic(의미론적) 태그에 대해서 알아보겠습니다.</p>
<p>먼저 Sementic 태그를 사용하면 다음과 같은 이점을 얻을 수 있습니다.</p>
<ul>
<li>검색엔진 최적화</li>
<li>웹 접근성 향상</li>
<li>가독성 향상</li>
</ul>
<p>그럼 이제 HTML의 Sementic 태그에는 어떤것들이 있는지 살펴볼까요?</p>
<ul>
<li><code>&lt;header&gt;</code>: 페이지에 대한 정보를 담는 태그. 보통 페이지 상단에 위치</li>
<li><code>&lt;nav&gt;</code>: 네비게이션 링크. 다른 페이지나 같은 페이지 안에 다른 부분으로 이어줌.</li>
<li><code>&lt;aside&gt;</code>: 페이지 전체 내용과는 관련이 있지만, 주요 내용과는 직접적인 연관이 없는 내용을 담고 있음.</li>
<li><code>&lt;main&gt;</code>: 문서의 body의 main content를 정의할 때 사용.</li>
<li><code>&lt;section&gt;</code>: 문서나 응용프로그램의 일반적인 섹션을 표현.</li>
<li><code>&lt;article&gt;</code>: 여러가지 아이템들을 묶어 재사용 가능하도록 그룹화.</li>
<li><code>&lt;footer&gt;</code>: 사이트 하단에 위치. 주로 저작권이나 서비스 제공자 등을 표시.</li>
<li><code>&lt;details&gt;</code>: 추가정보나 요약정보등을 나타냄.</li>
<li><code>&lt;summary&gt;</code>: details의 자녀요소. 내용에 대한 요약이나 캡션등을 나타냄.</li>
<li><code>&lt;figcaption&gt;</code>: details의 자녀요소. 내용에 대한 캡션이나 제목등을 나타냄.</li>
<li><code>&lt;figure&gt;</code>: 일러스트,사진,코드,다이어그램등에 주석을 다는 용도로 사용됨.</li>
<li><code>&lt;mark&gt;</code>: 하나의 문서 내에서 다른 문맥과의 관련성을 나타내기 위해서 참조 목록으로 마킹되거나 하이라이트된 텍스트를 표현.</li>
<li><code>&lt;time&gt;</code>: 24시간 혹은 그레고리력에서의 정밀한 시간을 나타낼 때 사용.</li>
</ul>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/654fb7ff-5865-46ed-aa1e-e586687eac06/image.png" alt=""></p>
<p>과거에는 div 태그의 class를 정의해서 사용하였지만, 현재는 위 그림과 같이 Sementic 태그를 사용해서 HTML을 작성하는것을 권장하고 있습니다.</p>
<h4 id="실습">실습</h4>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/3955ea22-4282-42c0-8f4d-55c717aaa4fa/image.png" alt=""></p>
<p>먼저 div 태그로 class를 정의하는 방법을 살펴보겠습니다.</p>
<p>참고로 div 태그로 클래스를 생성할때 <code>.</code>뒤에 만들고자 하는 태그이름을 붙이면 자동으로 생성해줍니다.</p>
<p>예를들어 <code>.header</code> 을 입력하면 <code>&lt;div class=&quot;header&quot;&gt;</code> 가 생성됩니다.</p>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
  &lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot; /&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot; /&gt;
    &lt;title&gt;Non Sementic Tag&lt;/title&gt;
    &lt;style&gt;
      * {
        text-align: center;
      }
      .header {
        border: 2px solid red;
        line-height: 55px;
        height: 55px;
      }
      .nav {
        border: 2px solid blue;
        height: 110px;
      }
      .main {
        border: 2px solid green;
        height: 300px;
        line-height: 300px;
      }
      .footer {
        border: 2px solid black;
        height: 55px;
        line-height: 55px;
      }
      .ul {
        list-style: none;
        padding-left: 0px;
      }
    &lt;/style&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;div class=&quot;header&quot;&gt;Header 영역&lt;/div&gt;
    &lt;div class=&quot;nav&quot;&gt;
      &lt;ul&gt;
        &lt;li&gt;menu1&lt;/li&gt;
        &lt;li&gt;menu2&lt;/li&gt;
        &lt;li&gt;menu3&lt;/li&gt;
        &lt;li&gt;menu4&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/div&gt;

    &lt;div class=&quot;main&quot;&gt;Content 영역&lt;/div&gt;
    &lt;div class=&quot;footer&quot;&gt;Footer 영역&lt;/div&gt;
  &lt;/body&gt;
&lt;/html&gt;
</code></pre><p>먼저 div의 class를 통해서 만들면 모두 div 태그의 클래스를 정의해서 만들기 때문에 가독성이 떨어진다는 단점이 있습니다. CSS의 스타일을 정의할때도 앞에 <code>.</code>이 붙는다는 차이점이 있네요.</p>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
  &lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot; /&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot; /&gt;
    &lt;title&gt;Sementic&lt;/title&gt;
    &lt;style&gt;
      * {
        text-align: center;
      }
      header {
        border: 2px solid red;
        line-height: 55px;
        height: 55px;
      }
      nav {
        border: 2px solid blue;
        height: 110px;
      }
      main {
        border: 2px solid green;
        height: 300px;
        line-height: 300px;
      }
      footer {
        border: 2px solid black;
        height: 55px;
        line-height: 55px;
      }
      ul {
        list-style: none;
        padding-left: 0px;
      }
    &lt;/style&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;header&gt;Header 영역&lt;/header&gt;
    &lt;nav&gt;
      &lt;ul&gt;
        &lt;li&gt;main1&lt;/li&gt;
        &lt;li&gt;main2&lt;/li&gt;
        &lt;li&gt;main3&lt;/li&gt;
        &lt;li&gt;main4&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/nav&gt;
    &lt;main&gt;Content 영역&lt;/main&gt;
    &lt;footer&gt;Footer 영역&lt;/footer&gt;
  &lt;/body&gt;
&lt;/html&gt;
</code></pre><p>이제 Sementic 태그를 이용해서 코드를 작성해보았습니다. 해당 내용이 어떤 파트인지 한눈에 알아보기 쉽게 가독성이 좋아졌습니다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Road to Trailblazer] 2일차 학습]]></title>
            <link>https://velog.io/@paul_velog/Road-to-Trailblazer-2%EC%9D%BC%EC%B0%A8-%ED%95%99%EC%8A%B5</link>
            <guid>https://velog.io/@paul_velog/Road-to-Trailblazer-2%EC%9D%BC%EC%B0%A8-%ED%95%99%EC%8A%B5</guid>
            <pubDate>Wed, 05 Feb 2025 20:09:29 GMT</pubDate>
            <description><![CDATA[<h2 id="about-salesforce-about-crm">&lt;About Salesforce, About CRM&gt;</h2>
<p>오늘의 About CRM 주제는  <strong>“대체 세일즈포스는 누구를 위한 플랫폼인가?”</strong> 입니다.</p>
<p>저번시간에 세일즈포스와 CRM에 대해서 알아봤는데요, 
세일즈포스는 CRM의 대표주자로 고객관계관리 플랫폼입니다.</p>
<p>그렇다면 세일즈포스는 과연 누구를 위한 플랫폼일까요?
기업의 제품을 이용하는 고객들? 혹은 잠재 고객?
아니면 기업에서 일하는 마케팅 부서의 직원?</p>
<h4 id="crm-vs-마케팅-자동화">CRM vs 마케팅 자동화</h4>
<p>오늘 주제에 대한 답을 알아보기 위해 먼저 CRM과 마케팅 자동화에 대해 알아보겠습니다.</p>
<p>먼저 CRM은 영업부서에서 기존 고객을 관리하기 위해 사용합니다. 마케팅 자동화는 마케팅 부서에서 잠재 고객을 관리하기 위해 사용합니다. 즉 CRM은 기존 고객에 대한 관리를, 마케팅 자동화는 잠재 고객에 대한 관리를 한다는 점에서 차이점이 있다고 할 수 있습니다.</p>
<p>CRM과 마케팅 자동화를 함께하면 가시성, 자동화, 보고 측면에서 고객을 관리할때 큰 시너지 효과를 볼 수 있다고 합니다. 세일즈포스에서 제공하는 서비스의 장점이 이러한 CRM과 마케팅 자동화의 시너지인것 같습니다.</p>
<h4 id="세일즈포스-customer-360은-어떤-플랫폼인가요">세일즈포스 Customer 360은 어떤 플랫폼인가요?</h4>
<p>저번시간에 세일즈포스에 대해 알아보며 Customer 360에 대해서 잠깐 언급했었는데요, 그렇다면 Customer 360은 구체적으로 어떤 플랫폼일까요?</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/98e28916-23b4-4e3e-84a5-ef427f084d52/image.png" alt=""></p>
<p>기업에는 세일즈,마케팅,서비스,관리부서 등등.. 많은 부서들이 있는데요, 각 부서마다 따로 정보를 관리하기 때문에 유기적으로 소통하기 힘들며 사일로 현상이 발생합니다.</p>
<p>Customer 360은 모두가 같은 플랫폼을 사용하고, 같은 데이터를 공유하며 유기적인 소통을 할 수 있기 때문에 위와 같은 팀 사일로 현상을 방지할 수 있습니다. 
모든 고객에 대해 전방위적인 정보를 공유할 수 있게 되는것이죠. Customer 360의 360은 이러한 360도의 전방위적인 정보를 공유한다는 의미에서 붙여진 것 같네요. </p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/f58ae528-e0e0-4147-8ae4-9ac10fc99e0c/image.png" alt=""></p>
<p>Customer 360에는 Tableau, Einstein, 그리고 우리가 협업할 때 자주 사용하는 Slack까지 정말 많은 기능이 포함되어 있는데요, 위의 CRM과 마케팅 자동화의 사례에서도 알 수 있듯이 함께 사용할수록 시너지 효과를 볼 수 있는 기능들이 많습니다. 앞서 말씀드렸던 자동화, 가시성, 보고등에서 등에서 이점을 볼 수 있는것이죠.</p>
<p>이렇게만 본다면 세일즈포스는 기업을 위한 플랫폼인것 같습니다. 그렇다면 고객들은 어떠한 이점이 있을까요?</p>
<p>아마 대부분 제품을 이용하며 서비스 센터에 상담하며 불편을 느껴본 경험이 있을겁니다. 했던말을 또하고 자기 담당부서가 아니라며 이리저리 돌다보면 매우 화가나죠.</p>
<p>Customer 360은 유기적인 고객데이터 관리를 통해 이러한 문제점을 해결해줍니다. 즉 기업이 고객과 1대1로 소통하는 느낌인거죠. 따라서 고객은 일일이 설명하지 않아도 내가 필요한 서비스를 제공받을 수 있게 됩니다.</p>
<p><strong>세일즈포스가 누구를 위한 플랫폼인가</strong>에 대한 정답은 없지만 중요한건 기업과 고객이 더욱 원할하게 소통할 수 있게 해준다는 점입니다.</p>
<h2 id="trailhead-study"><code>&lt;Trailhead Study&gt;</code></h2>
<h4 id="salesforce-표준-및-맞춤형-객체">Salesforce 표준 및 맞춤형 객체</h4>
<ul>
<li>리드(Lead): 잠재 고객 </li>
<li>계정(Account): 비즈니스를 함께하는 기업</li>
<li>연락처(Contact): 계정(Account)에서 일하는 직원</li>
<li>기회(Opportunity): 구매할 자격있는 리드(Lead)</li>
</ul>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/63bdf919-984a-4d8f-a5b0-17e9a6cd08f5/image.png" alt=""></p>
<p>리드가 자격이 있다고 검증되면 계정,연락처,기회로 변환할 수 있다.</p>
<p>오늘배운 내용중에 가장 핵심내용입니다. 조금 추상적이라 이해하기 어려운데요, 예시를 들어 간단히 설명해보겠습니다.</p>
<p>먼저 B2B 서비스를 제공하는 세일즈포스 사용기업 A가 있다고 가정해보겠습니다. A 기업의 잠재고객인 기업을 B라고 한다면 B가 리드가 됩니다.</p>
<p>그리고 영업에 성공하여 B가 실제 고객이 된다면 B는 <code>리드</code>에서 <code>계정(Account)</code>으로 변환됩니다. 그리고 생성된 <code>연락처(Contact)</code>에 B기업에서 일하는 직원들을 관리할 수 있습니다. <code>기회(Opportunity)</code>는 실제 판매 가능성이 있는 거래정보이며 구체적인 거래건을 관리하게 됩니다.   </p>
<p>조금 더 이해하기 쉽게 화장품 회사의 고객관리 프로세스를 예시로 들어보겠습니다.</p>
<ul>
<li>1.제품의 샘플 신청자 발생 -&gt; 잠재고객이므로 리드로 등록</li>
<li>2.구매 의향 확인 -&gt; 리드에서 개인 어카운트로 전환</li>
<li>3.구체적인 구매 상담 시작 -&gt; 기회 생성(판매할 가능성이 있는 제품 등록)</li>
</ul>
<h4 id="lightning-experience">Lightning Experience</h4>
<p>Lightning Experience는 세일즈포스가 2015년에 출시한 현대적인 사용자 인터페이스입니다. 기존의 Classic 인터페이스를 대체하여 현대적인 디자인과 UX,향상된 생산성 기능,개발자 친화적 환경,성능 최적화 등의 특징이 있습니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/c42afd07-c001-476d-bd89-13a41e171de5/image.png" alt=""></p>
<p>Play Ground에서 간단하게 둘러보면서 Lightning Experience의 UX에 대해 체험해보았습니다.</p>
<h3 id="실습">실습</h3>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/7f91f3cd-16ac-4e96-b030-7d4d2d1682b5/image.png" alt=""></p>
<p>Account에서 New를 통해 새로운 계정을 생성할 수 있습니다. 많은 정보를 입력할 수 있지만 간단하게 이름, 타입, 산업 정도의 정보만 입력하여 계정을 생성하였습니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/9565228a-8cdc-4713-bede-f48c53aee518/image.png" alt=""></p>
<p>이제 Account에서 생성한 계정을 확인할 수 있습니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/77ed01d8-3076-4e61-9db0-c06ec19d0269/image.png" alt="">
계정을 생성했으니 연락처가 있어야겠죠? Contact에서 New를 클릭하여 새 연락처를 생성해줍니다.
<img src="https://velog.velcdn.com/images/paul_velog/post/93ddfeb9-8057-4942-810e-ff75aa246d13/image.png" alt=""></p>
<p>깜빡하고 Account Name을 등록안해줬네요. Edit을 통해 수정해줍니다.
<img src="https://velog.velcdn.com/images/paul_velog/post/700ff87f-8439-41c7-beb4-5f82bc5bf093/image.png" alt="">
Account Name 필드를 클릭하면 자동으로 Account 목록에서 선택하거나 검색할 수 있도록 드롭다운 됩니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/deff4c0f-0974-457f-bd92-0e0ba493c55c/image.png" alt=""></p>
<p>이제 해당 Account의 연락처에서 직원정보를 확인할 수 있습니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/509cff89-3e1d-4f07-85e1-ec2632c69e3a/image.png" alt=""></p>
<p>같은방법으로 기회도 생성해주었는데요, 검색창 오른쪽에 보면 테이블모양 아이콘이 있습니다. 클릭해주면 <code>Kanban</code>을 선택할 수 있는데요 선택해줍니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/b605bc1f-9d70-4b4c-8764-5376c62a47d5/image.png" alt=""></p>
<p>이제 프로세스를 더 한눈에 알아보기 쉽죠? 아마 이런게 세일즈포스의 Lightning Experience의 일종인것 같습니다.</p>
<h4 id="보고서">보고서</h4>
<p>이제 새로운 보고서를 만들어볼건데요, 먼저 Report에서 New Report를 클릭해줍니다.
<img src="https://velog.velcdn.com/images/paul_velog/post/8d4f16b1-3252-41f5-8525-52bb4403c5ba/image.png" alt=""></p>
<p>기회에 대한 보고서를 만들어줄겁니다. Opportunities를 선택해주고 Start Report를 클릭해줍니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/92b5c003-63d1-406c-a8c8-e86868a78bcd/image.png" alt=""></p>
<p>왼쪽에 보면 Outline과 Filters를 통해 원하는 보고서를 만들어줄 수 있습니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/c6825586-b25d-4ce5-84d3-5ed48c603862/image.png" alt=""></p>
<p>이대로 따라해주면 짜잔</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/e5bee3f6-f1f8-4227-b074-2216dc045d8a/image.png" alt=""></p>
<p>100k 이상의 Amount와 기타 등등 조건에 맞는 기회 보고서가 만들어졌습니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/8f7b3027-8a0a-41ec-a805-5cb473669889/image.png" alt=""></p>
<p>오른쪽 상단에 표 모양을 클릭해주면 차트화해서 보는기능도 있습니다. Stage를 추가해주었기 때문에 Stage 별로 차트화해주는것 같네요.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTML 과 친해지기 (5)]]></title>
            <link>https://velog.io/@paul_velog/HTML-%EA%B3%BC-%EC%B9%9C%ED%95%B4%EC%A7%80%EA%B8%B0-5</link>
            <guid>https://velog.io/@paul_velog/HTML-%EA%B3%BC-%EC%B9%9C%ED%95%B4%EC%A7%80%EA%B8%B0-5</guid>
            <pubDate>Tue, 28 Jan 2025 05:48:15 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/paul_velog/post/543f0a16-9a7b-482b-b442-f5d5ad02df4e/image.png" alt=""></p>
<p>이번시간에는 표(Table) 태그에 대해서 알아볼 예정입니다.
표 태그는 데이터베이스의 표(Table)과 같이 행열의 개념을 사용합니다. </p>
<h3 id="테이블-기본-태그">테이블 기본 태그</h3>
<ul>
<li><code>table</code>: 표 생성. 표 전체를 감싸는 태그</li>
<li><code>caption</code>: 표의 제목 및 설명 (캡션 태그)</li>
<li><code>tr</code>: 표의 행. <code>th(제목 열)</code>,<code>td(일반 열)</code>의 부모 태그 </li>
<li><code>th</code>: 제목 열. <code>tr</code> 태그의 자식으로 사용.</li>
<li><code>td</code>: 일반 열. <code>tr</code> 태그의 자식으로 사용.</li>
</ul>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
  &lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot; /&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot; /&gt;
    &lt;title&gt;Table tag&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;h1&gt;기본 테이블&lt;/h1&gt;
    &lt;table&gt;
      &lt;caption&gt;
        프로필 테이블
      &lt;/caption&gt;
      &lt;tr&gt;
        &lt;th&gt;1행 1열&lt;/th&gt;
        &lt;th&gt;1행 2열&lt;/th&gt;
        &lt;th&gt;1행 3열&lt;/th&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td&gt;2행 1열&lt;/td&gt;
        &lt;td&gt;2행 2열&lt;/td&gt;
        &lt;td&gt;2행 3열&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td&gt;3행 1열&lt;/td&gt;
        &lt;td&gt;3행 2열&lt;/td&gt;
        &lt;td&gt;3행 3열&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
  &lt;/body&gt;
&lt;/html&gt;
</code></pre><p><img src="https://velog.velcdn.com/images/paul_velog/post/3fccd7c6-41e0-4bbe-9a97-f1b41fe31b64/image.png" alt=""></p>
<p>테이블의 기본태그를 사용해서 3x3 테이블을 만들어보았는데요, 뭔가 허전하죠?</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/baf4e708-d111-4f3d-9c61-cec2859dae4f/image.png" alt=""></p>
<p>테이블 속성에 <code>border</code> 를 추가하면?
<img src="https://velog.velcdn.com/images/paul_velog/post/5648a900-0ec8-4789-a90a-d82be3e3d30a/image.png" alt=""></p>
<p>이렇게 boarder line을 생성해서 테이블을 보기 편하게 만들어줍니다.</p>
<p>다만 boarder 부분이 빨갛게 뜨는게 뭔가 찜찜하지 않으신가요? </p>
<p>이게 html이 문법에 매우 관대하기 때문에 그냥 실행되긴 하지만, 웹 표준을 준수하길 권장하기 때문에 이와 같이 boarder 옵션을 사용하는것을 지양한다고 합니다. </p>
<p>*<em>즉 <code>&lt;table&gt;</code> 태그에 boarder 옵션을 사용하는 방법은 웹 표준에 따르면 권장하지 않는 방식인거죠.
*</em></p>
<p>웹 표준은 아래와 같은 CSS 방식을 선호하는데요, 아직 CSS를 배우지 않았으니 이런 느낌으로 작성한다 정도만 보고 넘어가도록 하겠습니다.</p>
<pre><code>&lt;style&gt;
    table {
      border: 1px solid black;
    }
    th,
    td {
      border: 1px solid black;
    }
  &lt;/style&gt;</code></pre><h3 id="테이블-그룹태그">테이블 그룹태그</h3>
<ul>
<li><code>colgroup</code>: 열을 그룹으로 묶는 태그.</li>
<li><code>col</code>: <code>&lt;colgroup&gt;</code>의 자식태그로 열 단위를 나눔.
(span 속성으로 열을 그룹으로 묶을지 설정.
e.g. <code>&lt;col span = &quot;3&quot;&gt;</code>)</li>
<li><code>thead</code>: 표의 제목 열들을 묶는 그룹태그.</li>
<li><code>tbody</code>: 표의 일반 데이터들을 묶는 그룹태그.</li>
<li><code>tfoot</code>: 표의 하단 영역을 묶는 그룹태그.</li>
</ul>
<p>그룹태그는 테이블의 열 또는 행을 엮어서 한번에 처리해주는 태그인데요 직접 실습해보면서 알아보겠습니다.</p>
<pre><code>&lt;/table&gt;
    &lt;hr /&gt;
    &lt;h1&gt;테이블 그룹태그&lt;/h1&gt;
    &lt;table&gt;
      &lt;tr&gt;
        &lt;th&gt;반&lt;/th&gt;
        &lt;th&gt;이름&lt;/th&gt;
        &lt;th&gt;국어&lt;/th&gt;
        &lt;th&gt;수학&lt;/th&gt;
        &lt;th&gt;영어&lt;/th&gt;
        &lt;th&gt;CS&lt;/th&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td&gt;1반&lt;/td&gt;
        &lt;td&gt;90&lt;/td&gt;
        &lt;td&gt;100&lt;/td&gt;
        &lt;td&gt;75&lt;/td&gt;
        &lt;td&gt;80&lt;/td&gt;
        &lt;td&gt;95&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td&gt;1반&lt;/td&gt;
        &lt;td&gt;50&lt;/td&gt;
        &lt;td&gt;80&lt;/td&gt;
        &lt;td&gt;70&lt;/td&gt;
        &lt;td&gt;65&lt;/td&gt;
        &lt;td&gt;95&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
        &lt;td&gt;1반&lt;/td&gt;
        &lt;td&gt;40&lt;/td&gt;
        &lt;td&gt;35&lt;/td&gt;
        &lt;td&gt;27.5&lt;/td&gt;
        &lt;td&gt;87&lt;/td&gt;
        &lt;td&gt;99&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;</code></pre><p><img src="https://velog.velcdn.com/images/paul_velog/post/07512042-6320-45ae-aa5b-1d7b100acc00/image.png" alt=""></p>
<p>먼저 <code>&lt;hr/&gt;</code> 태그로 선을 긋고 아래에 새로운 테이블을 만들어보았습니다.</p>
<h4 id="colgroup-col-태그"><code>&lt;colgroup&gt;</code>, <code>&lt;col&gt;</code> 태그</h4>
<pre><code>&lt;table&gt;
      &lt;colgroup&gt;
        &lt;col class=&quot;col1&quot; /&gt;
        &lt;col class=&quot;col2&quot; /&gt;
        &lt;col class=&quot;col3&quot; /&gt;
        &lt;col class=&quot;col4&quot; /&gt;
        &lt;col class=&quot;col5&quot; /&gt;
        &lt;col class=&quot;col6&quot; /&gt;
      &lt;/colgroup&gt;
      &lt;tr&gt;</code></pre><p>생성한 테이블에 <code>colgroup</code> 태그를 생성하고 하위 태그인 <code>col</code> 태그를 열의 수에 맞게 생성하였습니다.</p>
<p>생성한 <code>col</code> 태그의 속성을 직접 바꿔줘도 적용이 되긴 하지만 위에서 언급했듯이 웹 표준에 맞지 않기 때문에 CSS를 활용하는 방법을 소개하겠습니다.</p>
<p>CSS를 활용해서 수정하려면 각 컬럼을 구분할 수 있어야 하니까 <code>class</code> 속성으로 각 컬럼의 이름을 명시해주었습니다.</p>
<pre><code>&lt;style&gt;
    table {
      border: 1px solid black;
    }
    th,
    td {
      border: 1px solid black;
    }
    .col1 {
      width: 80;
    }
    .col2 {
      background-color: aqua;
    }
  &lt;/style&gt;</code></pre><p>이제 이전에 CSS를 다룰때 만들었던 <code>style</code> 태그에 위와 같이 컬럼을 추가해서 width(너비), background-color 등을 수정할 수 있습니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/abda3a43-96ae-4653-bf6f-cc8e0a64be8f/image.png" alt=""></p>
<h4 id="theadtbodytfoot"><code>thead</code>,<code>tbody</code>,<code>tfoot</code></h4>
<pre><code>&lt;thead&gt;
        &lt;tr&gt;
          &lt;th&gt;반&lt;/th&gt;
          &lt;th&gt;이름&lt;/th&gt;
          &lt;th&gt;국어&lt;/th&gt;
          &lt;th&gt;수학&lt;/th&gt;
          &lt;th&gt;영어&lt;/th&gt;
          &lt;th&gt;CS&lt;/th&gt;
        &lt;/tr&gt;
      &lt;/thead&gt;
      &lt;tbody&gt;
        &lt;tr&gt;
          &lt;td&gt;1반&lt;/td&gt;
          &lt;td&gt;90&lt;/td&gt;
          &lt;td&gt;100&lt;/td&gt;
          &lt;td&gt;75&lt;/td&gt;
          &lt;td&gt;80&lt;/td&gt;
          &lt;td&gt;95&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;1반&lt;/td&gt;
          &lt;td&gt;50&lt;/td&gt;
          &lt;td&gt;80&lt;/td&gt;
          &lt;td&gt;70&lt;/td&gt;
          &lt;td&gt;65&lt;/td&gt;
          &lt;td&gt;95&lt;/td&gt;
        &lt;/tr&gt;
      &lt;/tbody&gt;
      &lt;tfoot&gt;
        &lt;tr&gt;
          &lt;td&gt;1반&lt;/td&gt;
          &lt;td&gt;40&lt;/td&gt;
          &lt;td&gt;35&lt;/td&gt;
          &lt;td&gt;27.5&lt;/td&gt;
          &lt;td&gt;87&lt;/td&gt;
          &lt;td&gt;99&lt;/td&gt;
        &lt;/tr&gt;
      &lt;/tfoot&gt;</code></pre><p><code>&lt;thead&gt;</code>는 <code>&lt;th&gt;</code> 태그로 작성된 제목열들을 묶어주었고, <code>&lt;tfoot&gt;</code>은 최하단 열들을, 마지막으로 남은 중간 열들은 <code>&lt;tbody&gt;</code> 태그로 묶어주었습니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/db446016-fd5e-450c-86d7-f6ee85dda4f1/image.png" alt=""></p>
<p>사실 표의 외관에는 변화가 없지만 추후에 <strong>CSS 스타일링</strong>, <strong>유지보수와 개발 용이성</strong> 등 때문에 사용한다고 합니다.</p>
<h4 id="colspan-rowspan">colspan, rowspan</h4>
<ul>
<li><code>&lt;th&gt;</code>,<code>&lt;td&gt;</code> <ul>
<li>colspan : 열 병합
e.g. <code>&lt;td colspan=&quot;2&quot;&gt;</code></li>
<li>rowspan : 행 병합
e.g <code>&lt;td rowspan=&quot;2&quot;&gt;</code></li>
</ul>
</li>
</ul>
<p>colspan과 rowspan은 엑셀에서 셀 병합하는 기능과 같다고 보시면 됩니다. <code>&lt;th&gt;</code>태그나 <code>&lt;td&gt;</code>태그에서 사용되며 위에서 나눈 <strong>그룹태그 단위로 병합이 가능합니다.</strong></p>
<pre><code>&lt;tbody&gt;
        &lt;tr&gt;
          &lt;td rowspan=&quot;2&quot;&gt;1반&lt;/td&gt;
          &lt;td&gt;90&lt;/td&gt;
          &lt;td&gt;100&lt;/td&gt;
          &lt;td&gt;75&lt;/td&gt;
          &lt;td&gt;80&lt;/td&gt;
          &lt;td&gt;95&lt;/td&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
          &lt;td&gt;50&lt;/td&gt;
          &lt;td&gt;80&lt;/td&gt;
          &lt;td&gt;70&lt;/td&gt;
          &lt;td&gt;65&lt;/td&gt;
          &lt;td&gt;95&lt;/td&gt;
        &lt;/tr&gt;
      &lt;/tbody&gt;</code></pre><p><code>&lt;tbody&gt;</code>부분의 rowspan을 2로 해보겠습니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/3bc92595-8ddd-4210-9abb-f4fc28177b0c/image.png" alt=""></p>
<p>바디부분의 두 셀이 묶인거 보이시죠? 하지만 rowspan을 3으로 설정해도 그 아래는 묶이지 않는데요, 
그 이유는 맨 아래는 <code>&lt;tfoot&gt;</code> 태그로 다른 그룹이기 때문입니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTML 과 친해지기 (4)]]></title>
            <link>https://velog.io/@paul_velog/HTML-%EA%B3%BC-%EC%B9%9C%ED%95%B4%EC%A7%80%EA%B8%B0-4</link>
            <guid>https://velog.io/@paul_velog/HTML-%EA%B3%BC-%EC%B9%9C%ED%95%B4%EC%A7%80%EA%B8%B0-4</guid>
            <pubDate>Thu, 23 Jan 2025 19:58:34 GMT</pubDate>
            <description><![CDATA[<p>이번시간에는 이전에 다뤘던 폰트태그에 이어 목록태그에 대해서 다뤄볼 예정입니다.</p>
<h3 id="목록태그">목록태그</h3>
<ul>
<li><code>&lt;ol&gt;</code> Ordered List : 순서가 있는 목록
(type 속성으로 글머리 기호를 변경할 수 있음)</li>
<li><code>&lt;ul&gt;</code> Unordered Lists : 순서가 없는 목록</li>
<li><code>&lt;li&gt;</code> Listed Item : 목록의 하위 항목
(<code>ul</code>,<code>ol</code> 태그의 하위 항목으로 사용됨)</li>
<li><code>&lt;dl&gt;</code> Definition List : <strong>정의목록</strong>, 사전처럼 용어를 설명하는 목록
( eg.A는 B이다 와 같이 key=value 형태로 사용)</li>
<li><code>&lt;dt&gt;</code> Definition Term : 정의되는 <strong>용어의 제목</strong>을 넣을때 사용</li>
<li><code>&lt;dd&gt;</code> Definition Description : <strong>용어를 설명</strong>할 때 사용</li>
</ul>
<h4 id="주의사항">주의사항</h4>
<ul>
<li><code>&lt;dl&gt;</code>태그는 하나 이상의 <code>&lt;dt&gt;``&lt;dd&gt;</code> 쌍의 태그를 가져야함
(단 <code>&lt;dt&gt;</code> <code>&lt;dd&gt;</code> 태그가 반드시 하나의 짝으로 지어져야 하는것은 아님)</li>
<li><code>&lt;li&gt;</code> , <code>&lt;dt&gt;``&lt;dd&gt;</code> 태그는 하위태그로 존재해야하기 때문에 독립적으로 사용불가
(<code>&lt;li&gt;</code> 태그는 <code>&lt;ol&gt;</code> 또는 <code>&lt;ul&gt;</code> 태그 안에, <code>&lt;dt&gt;</code> <code>&lt;dd&gt;</code> 태그는 <code>&lt;dl&gt;</code> 태그 안에 하위 태그로 존재) </li>
</ul>
<h4 id="실습">실습</h4>
<h5 id="ol-태그">ol 태그</h5>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/cb634a33-b2dc-4f7b-a43f-0edc6d927d0a/image.png" alt=""></p>
<p>이제 나무위키의 계란후라이 조리법으로 목록태그 실습을 해보도록 하겠습니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/f4288f2c-a403-4695-a873-f125bb2beb9d/image.png" alt=""></p>
<p>먼저 <code>&lt;ol&gt;</code>태그를 생성한 후 목록에 있는 조리법을 복사해서 붙여넣기 해줍니다.</p>
<h5 id="tip">Tip</h5>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/99f5c06c-fa0a-4c4c-88bd-bdda5d238d85/image.png" alt=""></p>
<p>여기서 VS Code 내장기능에 대한 팁이 있는데요
<code>ctrl+alt</code> 를 누른 상태로 화살표를 아래로 내려주면 여러줄을 선택할 수 있게 됩니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/06cba89e-fbfc-4b2a-8639-08fce62f422b/image.png" alt=""></p>
<p>이렇게하면 한번에 <code>&lt;li&gt;</code>태그를 생성할 수 있습니다 👍</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/97929de2-8312-4a1f-8ec4-e5b1704f3634/image.png" alt=""></p>
<p>제가 앞에서 실수를한게 있는데요 <code>ol</code> 태그는 순서가 있는 태그라 위와 같이 1,2,3.. 등의 순번을 제거하고 사용해줍니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/2f064512-d57c-430d-9c4c-b45068825def/image.png" alt=""></p>
<p>이렇게 알아서 순서를 부여해주거든요</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/ba4070fe-acb8-433f-93ee-bc54e3cebf4c/image.png" alt=""></p>
<h5 id="ul-태그">ul 태그</h5>
<p>이제 순서가 없는 목록인 <code>&lt;ul&gt;</code>태그로 목록을 만들어볼건데요 여기서도 팁이 있습니다.</p>
<p><code>li*갯수</code>와 같이 갯수를 입력하고 엔터를 누르면
<img src="https://velog.velcdn.com/images/paul_velog/post/b6933b69-c3cc-440b-9eb4-73f4cb8d3cf6/image.png" alt="">
이렇게 여러개의 <code>&lt;li&gt;</code>태그를 자동으로 생성해주는데요 
<img src="https://velog.velcdn.com/images/paul_velog/post/2988eb8d-08c1-419c-b27c-1ea2e3fac2d6/image.png" alt=""></p>
<p>이렇게 자동생성된 태그는 <code>Tab</code>키를 누르면 자동으로 다음 <code>&lt;li&gt;</code>태그로 넘어가는 기능도 사용할 수 있습니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/925bb464-8002-4f62-a685-b7f0eb80de7c/image.png" alt=""></p>
<h5 id="dl-dtdd-태그">dl, dt+dd 태그</h5>
<p>dl 태그와 하위태그들은 하위태그를 나타내는 <code>&gt;</code> 와 함께 <code>dl&gt;(dt+dd)*갯수</code> 이런식으로 한번에 생성할 수 있습니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/c81d5acd-6052-4905-a05a-f151273941e1/image.png" alt=""></p>
<p><code>dl</code> 태그의 <code>dt,dd</code>는 <code>dt</code>에 <strong>설명할 용어</strong>를 넣고 <code>dd</code>에 <strong>용어에 대한 설명</strong>을 넣는방식으로 아래와 같이 작성합니다.</p>
<pre><code>&lt;dl&gt;
      &lt;dt&gt;HTML&lt;/dt&gt;
      &lt;dd&gt;
        Hyper Text Markup Language의&lt;br /&gt;
        약자로 웹 문서를 만들기 위한 &lt;b&gt;마크업&lt;/b&gt;언어이다.
      &lt;/dd&gt;
      &lt;dt&gt;CSS&lt;/dt&gt;
      &lt;dd&gt;
        Cascading Style Sheets의&lt;br /&gt;
        약자로 HTML을 꾸미는 &lt;b&gt;스타일 시트&lt;/b&gt;이다.
      &lt;/dd&gt;
      &lt;dt&gt;JavaScript&lt;/dt&gt;
      &lt;dd&gt;
        웹 페이지를 생동감 있게 동작시키기 위한&lt;br /&gt;
        &lt;b&gt;프로그래밍 언어&lt;/b&gt;이다.
      &lt;/dd&gt;
    &lt;/dl&gt;</code></pre><p><img src="https://velog.velcdn.com/images/paul_velog/post/dfa698c1-b736-45b8-ab42-fcb6acafb07d/image.png" alt=""></p>
<p>이러한 구조로 용어를 설명하는데 사용됩니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTML 과 친해지기 (3)]]></title>
            <link>https://velog.io/@paul_velog/HTML-%EA%B3%BC-%EC%B9%9C%ED%95%B4%EC%A7%80%EA%B8%B0-3</link>
            <guid>https://velog.io/@paul_velog/HTML-%EA%B3%BC-%EC%B9%9C%ED%95%B4%EC%A7%80%EA%B8%B0-3</guid>
            <pubDate>Thu, 23 Jan 2025 18:33:01 GMT</pubDate>
            <description><![CDATA[<p>이번시간에는 HTML 태그에 어떤 종류가 있는지 또 어떤 기능을 가진 태그들이 있는지 자세히 알아보려고 합니다.</p>
<h3 id="글꼴-태그">글꼴 태그</h3>
<ul>
<li><code>&lt;h1&gt;~&lt;h6&gt;</code> Heading : 제목 또는 부제목
(숫자가 작을수록 크기가 커짐)</li>
<li><code>&lt;p&gt;</code> Paragraph : 하나의 문단을 표시</li>
<li><code>&lt;hr&gt;</code> Horizontal Rule : 가로선 긋기 (종료태그 X)</li>
<li><code>&lt;br&gt;</code> Break : 줄바꿈 (종료태그 X)</li>
<li><code>&lt;i&gt;</code> Italic : <em>이텔릭체</em> 로 표시</li>
<li><code>&lt;em&gt;</code> Emphasis : <em>이텔릭체</em> 로 강조</li>
<li><code>&lt;b&gt;</code> Bold : <strong>볼드체</strong>로 진하게 표시</li>
<li><code>&lt;strong&gt;</code> : <strong>볼드체</strong>로 진하게 강조</li>
</ul>
<p>여기서 <code>&lt;i&gt;</code>,<code>&lt;b&gt;</code> 태그와 <code>em</code>,<code>strong</code> 태그의 차이점을 짚고 넘어가자면 표시와 강조의 차이라고 할 수 있는데요,
이는 브라우저에서 스크린리더(Screen Reader) 기능을 사용할 경우 음성 합성 기술이 해당 부분을 강조하여 읽을때 차이가 발생한다고 합니다.</p>
<h3 id="live-server">Live Server</h3>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/a569e7ef-26de-4ba1-886f-6d8374edc25c/image.png" alt=""></p>
<p>간단한 실습을 하기 전에 VS Code에 Live Server라는 어플리케이션을 설치해서 적용해보려고 합니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/bd1f0035-6af2-4e6a-8a47-d546fdea85d0/image.png" alt="">
<img src="https://velog.velcdn.com/images/paul_velog/post/96f2b479-f217-41cd-8f9f-8baccb068c7e/image.png" alt="">
Live Server를 설치한 후 우측하단에 <code>Go live</code>를 클릭하면 &quot;Server is Started at port : 5500&quot;이라는 알림과 함께 웹페이지가 열리게 됩니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/f3a7141b-64d0-496f-b37d-d3d5f1872198/image.png" alt=""></p>
<p>이렇게하면 수정된 HTML 코드를 <code>Ctrl+s</code>로 저장하면 실시간으로 반영해서 보여주게 됩니다. 참 편리하죠👍?</p>
<h3 id="prettier">Prettier</h3>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/01d4afda-770b-4918-be6d-da5b80611b4e/image.png" alt=""></p>
<p>이번에는 Prettier 라는 코드 포맷터를 설치해볼건데요 간단히 설명하자면 코드를 좀 더 이쁘게 짜는걸 도와주는 기능을 제공합니다.</p>
<h4 id="format-on-save">Format on Save</h4>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/7861728a-076c-47c0-85fc-007eb4f56a73/image.png" alt=""></p>
<p>설치가 끝나면 먼저 <code>crtl+,</code>로 설정창을 열어서 Format On Save에 체크해줍니다. 이제 Save와 동시에 포맷이 적용됩니다!</p>
<h4 id="tab-width">Tab Width</h4>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/2df2e39b-86a7-4016-bb77-a627f5eeabe3/image.png" alt=""></p>
<p>이제 Prettier로 검색해서 최하단에 보시면 Tab Width를 조절할 수 있는데요 보통 현업에서 <strong>두칸</strong>으로 권장한다고 합니다.</p>
<h4 id="prettier-quote">Prettier Quote</h4>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/0ba4987b-58fb-4f66-8226-238236725f1d/image.png" alt=""></p>
<p>이제 Prettier Quote를 검색해서 <code>1)Single Quote에 체크 2)JavaScript의 Quote Style : single</code> 로 설정해줍니다. 이렇게하면 자바스크립트의 <strong>Quote를 Single Quote로 일관성있게 통일시켜줍니다.</strong></p>
<h4 id="default-formatter-설정">Default Formatter 설정</h4>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/2da62fba-0007-451e-b7a8-0e9ad3031df4/image.png" alt="">
Default Formatter를 Prettier로 설정해줍니다.</p>
<p>이제 마지막으로 <code>우클릭</code>-&gt;<code>Format Document with...</code> 
-&gt;<code>Configure Default Formatter...</code> -&gt; <code>Prettier</code> 으로 HTML도 Prettier가 디폴트로 적용되게 해줍니다.</p>
<h3 id="실습">실습</h3>
<p>이제 세팅이 완료되었으니 위에 배운 태그들을 사용해서 간단한 실습을 해보도록 하겠습니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/aeb57e40-e8b9-48b2-9c90-a38588a55e97/image.png" alt=""></p>
<p>사전에 설치한 Prettier와 Live Server 엄청 편리하네요👍 html 문서 수정하면서 일일히 새로고침하고 줄맞추고 했던거 생각하면..🥲 지금이라도 알아서 다행입니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/79ace934-861c-491c-a3ed-5068f230f2ec/image.png" alt=""></p>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
  &lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot; /&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot; /&gt;
    &lt;title&gt;Document&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;h1&gt;제목1&lt;/h1&gt;
    &lt;h2&gt;제목2&lt;/h2&gt;
    &lt;h3&gt;제목3&lt;/h3&gt;
    &lt;h4&gt;제목4&lt;/h4&gt;
    &lt;h5&gt;제목5&lt;/h5&gt;
    &lt;h6&gt;제목6&lt;/h6&gt;
    &lt;hr /&gt;
    &lt;h1&gt;김치볶음밥&lt;/h1&gt;
    &lt;p&gt;
      김치볶음밥은 한국의 대중적인 요리의 하나이자 볶음밥의 일종으로서 김치와
      밥을 주재료로 프라이팬 등에서 볶은 요리다.[1] 조리하기 편하고 간단하여,
      한국의 음식점인 분식점에서 대부분 팔고 있는 음식이다.[1]
    &lt;/p&gt;
    &lt;hr /&gt;
    &lt;h1&gt;애국가&lt;/h1&gt;
    &lt;h3&gt;1&lt;/h3&gt;
    &lt;i&gt;동해&lt;/i&gt; 물과 &lt;em&gt;백두산&lt;/em&gt;이 마르고 닳도록&lt;br /&gt;
    하느님이 보우하사 우리나라 만세.&lt;br /&gt;
    무궁화 삼천리 화려 강산&lt;br /&gt;
    대한 사람, 대한으로 길이 보전하세.&lt;br /&gt;
    &lt;h3&gt;2&lt;/h3&gt;
    &lt;b&gt;남산&lt;/b&gt; 위에 저 &lt;strong&gt;소나무&lt;/strong&gt;, 철갑을 두른 듯&lt;br /&gt;
    바람 서리 불변함은 우리 기상일세.&lt;br /&gt;
    무궁화 삼천리 화려 강산&lt;br /&gt;
    대한 사람, 대한으로 길이 보전하세.&lt;br /&gt;
    &lt;h3&gt;3&lt;/h3&gt;
    가을 하늘 공활한데 높고 구름 없이&lt;br /&gt;
    밝은 달은 우리 가슴 일편단심일세.&lt;br /&gt;
    무궁화 삼천리 화려 강산&lt;br /&gt;
    대한 사람, 대한으로 길이 보전하세.&lt;br /&gt;
    &lt;h3&gt;4&lt;/h3&gt;
    이 기상과 이 맘으로 충성을 다하여&lt;br /&gt;
    괴로우나 즐거우나 나라 사랑하세.&lt;br /&gt;
    무궁화 삼천리 화려 강산&lt;br /&gt;
    대한 사람, 대한으로 길이 보전하세.&lt;br /&gt;
  &lt;/body&gt;
&lt;/html&gt;
</code></pre><p>이렇게 오늘 배운 태그들을 왈용해서 위키피디아 느낌으로 html을 만들어보았는데요 
Live Server와 Prettier 덕분에 시간이 두배 이상은 단축된것 같네요👍 </p>
<p>다음시간에는 다른 종류의 태그들에 대해서 더 다뤄보도록 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTML 과 친해지기 (2)]]></title>
            <link>https://velog.io/@paul_velog/HTML-%EA%B3%BC-%EC%B9%9C%ED%95%B4%EC%A7%80%EA%B8%B0-2</link>
            <guid>https://velog.io/@paul_velog/HTML-%EA%B3%BC-%EC%B9%9C%ED%95%B4%EC%A7%80%EA%B8%B0-2</guid>
            <pubDate>Wed, 22 Jan 2025 09:32:00 GMT</pubDate>
            <description><![CDATA[<p>저번시간에서 HTML 태그를 활용해서 간단한 웹페이지 구조를 만들어 보았습니다. 그렇다면 HTML의 태그는 어떤 구조로 되어있을까요?</p>
<h4 id="태그">태그</h4>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/12fe6739-9696-4400-805a-ee71df953250/image.png" alt=""></p>
<p>보통 태그는 <code>시작 태그</code>와 <code>종료 태그</code> 사이에 텍스트를 넣는 방식으로 사용되는데요, <code>시작 태그</code>에는 속성이라는 부분이 존재하여 속성명에 속성값을 할당하여 사용할 수 있습니다. 속성값을 생략하여 사용하면 디폴트값이 적용되겠죠?</p>
<h4 id="html-기본-구조">HTML 기본 구조</h4>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
&lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot;&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
    &lt;title&gt;Document&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;/body&gt;
&lt;/html&gt;</code></pre><p>html 파일을 생성한 뒤 <code>!+Enter</code> 커맨드를 입력하면 기본적인 HTML 구조가 생성됩니다.</p>
<ul>
<li><code>DOCTYPE</code> : 문서의 타입을 의미</li>
<li><code>html</code> : html 문서의 시작과 끝을 정의
(lang은 html 문서의 언어를 의미. 한국어는 &quot;ko&quot;)</li>
<li><code>head</code> : 웹페이지의 보이지 않는 부분의 정보를 담당
( eg. title 태그 ...)</li>
<li><code>body</code> : 웹페이지의 실제 문서 내용을 담당</li>
<li><code>&lt;!-- 주석 --&gt;</code> : 주석은 꺾쇠 안에 <code>!</code>와 <code>--</code> 를 사이에 넣어서 작성합니다.</li>
<li><code>ctrl+/</code> : 선택한 부분을 주석처리 합니다.
(윈도우 커맨드 한정이며 VS code 환경 이외에도 지원되는지는 모르겠습니다)</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTML 과 친해지기 (1)]]></title>
            <link>https://velog.io/@paul_velog/HTML-%EA%B3%BC-%EC%B9%9C%ED%95%B4%EC%A7%80%EA%B8%B0-1</link>
            <guid>https://velog.io/@paul_velog/HTML-%EA%B3%BC-%EC%B9%9C%ED%95%B4%EC%A7%80%EA%B8%B0-1</guid>
            <pubDate>Wed, 22 Jan 2025 08:34:39 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/paul_velog/post/17bb6d29-de2b-4623-af99-ee4e75d9fadd/image.png" alt=""></p>
<p>그동안 웹개발을 하면서 프론트쪽 코드에서 HTML을 많이 접해봤는데요 정작 제대로 공부해본 적은 없어서 이참에 친해져(?) 보고자 HTML과 CSS에 대해 공부하는 시간을 가져보려고 합니다.</p>
<h4 id="html이란">HTML이란?</h4>
<blockquote>
<p><em>HTML ?</em>
HTML(Hypertext Markup Language)은 웹사이트의 프론트엔드를 구축하는 데 사용되는 코딩 언어입니다. 텍스트, 이미지, 링크 및 멀티미디어와 같은 요소를 통합하여 콘텐츠의 <strong>구조와 레이아웃을</strong> 제공합니다.</p>
</blockquote>
<p>여기서 포인트는 HTML이 <strong>구조와 레이아웃</strong>을 제공한다는 점입니다. HTML, CSS, JS의 역할을 이해하기 쉽게 분류하자면 HTML은 웹의 구조, CSS 는 디자인적 요소, JS는 기능적 요소를 담당한다고 보면 됩니다.</p>
<h4 id="vs-code-환경에서-실습">VS Code 환경에서 실습</h4>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/7bd18960-f789-4a6b-8b7a-989cb7232db0/image.png" alt=""></p>
<p>먼저 HTML 실습을 진행하기 위해 폴더를 생성한 후 <code>index.html</code> 파일을 생성해줍니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/15696419-3afd-40f1-a097-ceef454db047/image.png" alt=""></p>
<p><code>!</code>+<code>Enter</code> 단축키로 HTML을 시작할 수 있습니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/f1fbea7a-4ff4-4384-b504-26a7bc1498bc/image.png" alt=""></p>
<p>저장경로에 생성된 index.html 파일을 들어가줍니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/3d12774f-9644-4041-8f07-612e871d48c6/image.png" alt=""></p>
<p>아직은 아무 내용도 없습니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/52914b43-a578-4110-a072-7068f9d67cca/image.png" alt=""></p>
<p>프로그래밍 처음 시작할때 국룰 아시죠?
<code>body</code> 부분에 Hello World! 입력해주고 다시 들어가보겠습니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/795ad5bd-4097-465a-944f-7bcfd8caa2d4/image.png" alt=""></p>
<p>파이썬을 처음 배울때가 생각나네요😊</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/a015a3f7-bdcd-4fbb-968d-71409215a4e8/image.png" alt=""></p>
<p>이제 이런 느낌으로 구조를 만들어보려고 합니다.
먼저 위 텍스트를 복붙해서 <code>body</code>에 넣어줍니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/ee4d8715-c28e-4fd7-ac38-2e265ed82fba/image.png" alt="">
<img src="https://velog.velcdn.com/images/paul_velog/post/c2003e49-55ce-4876-b5cf-226aa00fe81f/image.png" alt=""></p>
<p>역시 생각한대로 안나오네요.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/b443d26b-ff73-4bfc-b5b3-cbe86695867b/image.png" alt=""></p>
<pre><code>&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
&lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot;&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
    &lt;title&gt;Hello HTML!&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;h1&gt;헬스&lt;/h1&gt;
    &lt;hr/&gt;
    &lt;p&gt; 위키백과, 우리 모두의 백과사전. &lt;/p&gt;
    &lt;p&gt;헬스(health)는 기본적으로 
    &lt;a href=&quot;https://ko.wikipedia.org/wiki/%EA%B1%B4%EA%B0%95&quot;&gt;건강&lt;/a&gt;을 
        가리키며, 대한민국에서는 근력 트레이닝이나 웨이트 트레이닝을 의미하기도 한다.
        그 외에 다음을 가리킨다.&lt;/p&gt;
    &lt;ul&gt;
        &lt;li&gt;
            의료
        &lt;/li&gt;
        &lt;li&gt;
            보건
        &lt;/li&gt;
        &lt;li&gt;
            체력 (게이밍)
        &lt;/li&gt;
        &lt;li&gt;
            패션 헬스(Fashion health)
        &lt;/li&gt;
        &lt;li&gt;
            헬스클럽(health club)
        &lt;/li&gt;
        &lt;li&gt;
            구글 헬스: 구글이 제공하는 개인 의료 정보 서비스
        &lt;/li&gt;
    &lt;/ul&gt;

&lt;/body&gt;
&lt;/html&gt;</code></pre><p><code>&lt;h1&gt;</code>,<code>&lt;hr/&gt;</code>,<code>&lt;p&gt;</code>,<code>&lt;ul&gt;,&lt;li&gt;</code> ,<code>&lt;a href&gt;</code>등의 태그를 사용해서 구조를 만들어보았습니다. 거의 비슷하죠?</p>
<p>다음시간에는 각 태그가 어떤 기능을 하는지 더 자세히 알아보도록 하겠습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Road to Trailblazer] 1일차 학습]]></title>
            <link>https://velog.io/@paul_velog/Road-to-Trailblazer-1%EC%9D%BC%EC%B0%A8-%ED%95%99%EC%8A%B5</link>
            <guid>https://velog.io/@paul_velog/Road-to-Trailblazer-1%EC%9D%BC%EC%B0%A8-%ED%95%99%EC%8A%B5</guid>
            <pubDate>Wed, 22 Jan 2025 07:37:51 GMT</pubDate>
            <description><![CDATA[<h3 id="about-salesforce-about-crm">&lt;About Salesforce, About CRM&gt;</h3>
<p>세일즈포스 그리고 CRM에 대해 배우기 전에 &#39;무엇을&#39; 또 &#39;왜&#39; 만드는지 알아보는 시간입니다. </p>
<blockquote>
<p>☁️Salesforce = CRM?</p>
</blockquote>
<p>클라우드하면 AWS가 가장 먼저 떠오르듯이 CRM하면 Salesforce를 빼놓을 수 없습니다. 
<strong>그렇다면 위의 명제는 참이라고 할 수 있을까요?</strong> 사실 정확히 따지자면 포함관계가 맞다고 생각하지만, 현재 CRM 분야에서 압도적인 점유율을 고려한다면 위 명제가 참이 될수도 있겠네요!</p>
<h4 id="1-crm은-무엇이며-어떻게-작동하나요">1) CRM은 무엇이며 어떻게 작동하나요?</h4>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/fdbc7d1b-10a8-4920-96e5-0a584badd07f/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/4c121cd5-952b-4e4a-bed1-e915b624f90f/image.png" alt=""></p>
<p>고객에게 맞춤형 광고를 보내고, 물건을 구입할때 추가적으로 필요한 물건을 추천해주고, 물건을 구입한 고객에게 주의사항이 담긴 메일을 보내는 등 고객관리에는 엄청 다양한 프로세스가 존재합니다.</p>
<p>이러한 고객관리 프로세스들을 모두 통틀어서 CRM(고객 관계 관리), CRM을 팀 단위로 좀 더 체계적으로 관리할 수 있게 하는 것이 세일즈포스라고 이해하면 될 것 같습니다.</p>
<h4 id="2-왜-많은-기업들이-세일즈포스를-사용하나요">2) 왜 많은 기업들이 세일즈포스를 사용하나요?</h4>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/6e9940df-4d63-4730-9509-bdf705421f8c/image.png" alt=""></p>
<p>다음은 <strong>Salesforce Explained</strong> 라는 시리즈의 내용인데요, 세일즈포스에 대해 궁금한 내용을 좀 더 쉽게 풀어서 설명해주는 시리즈인것 같습니다. 교양수업처럼 편하게 들으면 될 것 같네요👍</p>
<h4 id="salesforce-customer-360">Salesforce Customer 360</h4>
<blockquote>
<p>Salesfoce Customer 360은 모든 단계에서 발생하는 고객 데이터를 한곳에서 수집하여 영업,마케팅,서비스,커머스,IT 등 <em>모든 팀이 동일한 정보를 공유할 수 있도록 합니다</em>.  즉, 고객과의 신뢰를 향상시키고 개인화된 경험을 제공하기 위해 360도로 고객을 볼 수 있게 해주는 고객 관계 관리(CRM) 시스템 입니다.</p>
</blockquote>
<p>해당 영상에서는 세일즈포스의 <strong>Customer 360</strong>의 중요성에 대해 강조했는데요, 그 효과로 ROI(Return On Investment)를 통한 <strong>비용절감과 빠른성장</strong>(코로나 기준 최대 5배)을 꼽았습니다.
<img src="https://velog.velcdn.com/images/paul_velog/post/192e85ca-a8d1-470f-ab66-25cdcaddc20f/image.png" alt=""></p>
<p>ROI의 간단한 방정식에서 알 수 있듯이 <strong>Net Income(수익률)</strong> / <strong>Cost of Investment(투자 비용)</strong> 즉, 투자 비용 대비 수익률을 의미합니다. 즉 ROI를 높이는 방법에는 1) 수익률을 극대화 시키거나 , 2) 투자 비용 절감 등의 방법이 있겠네요</p>
<p>그렇다면 <strong>Customer 360</strong>은 어떤 방식으로 기업들의 ROI를 극대화 시켜줄까요?</p>
<p><strong>Customer 360</strong> 서비스 도입 전에는 여러팀에서 고객데이터를 따로 관리하여 평균 976개의 앱을 사용하였다고 합니다. 이는 <strong>비용적인 측면에서 비효율적</strong>일 뿐만 아니라 <strong>팀 사일로</strong>(팀 이기주의) 및 <strong>데이터 불균형</strong>으로 인해 데이터를 사용하는 시점에서 더 이상 유용한 데이터가 아닌 문제등이 발생하였습니다. </p>
<p><strong>Customer 360</strong>는 <strong>AI, 자동화 시스템, 실시간 고객 데이터 활용</strong> 등의 기능을 꼽을 수 있는데요, 가장 큰 특징으로  <strong>모든 팀원이 동일 고객에 대한 데이터를 공유하여 관리</strong>한다는 장점이 있습니다.</p>
<p>따라서 한가지 플랫폼에서 동일 고객의 실시간 데이터를 모든 팀원이 공유하며 관리하기 때문에 기존의 문제점을 모두 해결할 수 있습니다.</p>
<p>이 과정에서 불필요한 지출이 감소하고, 적절한 마케팅에 따른 수익률이 증가하여 ROI가 증가한다고 볼 수 있는데요, <strong>고객사의 무려 98%</strong>가 목표 ROI에 달성하였다고 합니다!</p>
<h3 id="trailhead-study">&lt;<strong>Trailhead Study</strong>&gt;</h3>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/08b92a26-e764-4f2b-ba26-0a527b86cff9/image.png" alt=""></p>
<p>오늘 트레일헤드 과제는  Salesforce Platform 기초 과정이었습니다.
<img src="https://velog.velcdn.com/images/paul_velog/post/79c8a68f-fab1-4bf9-83be-d5950174a18d/image.png" alt=""></p>
<p>트레일헤드에서는 가상의 회사를 사례로 들어서  효율성 개선등을 주제로 과제를 진행하는것 같습니다.</p>
<p>아래는 앱,개체,레코드,필드 등에 대한 설명인데요 기존에 사용하는 데이터베이스와 매우 흡사한 개념인 것 같네요.</p>
<ul>
<li>Salesforce에서 app(앱)은 비즈니스 프로세스를 지원하는 개체, 필드 및 기타 기능의 집합입니다. 사용 중인 앱을 확인하고 앱 시작 관리자(앱 시작 관리자 아이콘)를 사용하는 앱 간에 전환할 수 있습니다.</li>
<li>Objects(개체)는 특정 종류의 정보를 저장하는 Salesforce 데이터베이스의 테이블입니다. 그래픽에서 볼 수 있는 Property 개체와 같은 custom objects, Accounts 및 Contacts 같은 standard objects가 있습니다.</li>
<li>Records(레코드)는 개체 데이터베이스 테이블의 행입니다. 레코드는 개체와 연결된 실제 데이터입니다. 여기서는 구/군/시 속성이 레코드입니다.</li>
<li>Fields(필드)는 개체 데이터베이스 테이블의 열입니다. 표준 및 맞춤형 개체에는 모두 필드가 있습니다. Property 개체에는 주소 및 가격과 같은 필드가 있습니다.</li>
</ul>
<h4 id="dreamhouse">Dreamhouse</h4>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/994bf6a7-3e96-43f7-b826-dc8bed74180b/image.png" alt=""></p>
<p>오늘 사용한 앱은 <strong>Dreamhouse</strong>라는 앱인데요, 과제의 설명을 보니 아마 부동산 중개사 분들을 위한 고객 관리 어플리케이션인 것 같습니다.</p>
<p>오늘의 미션은 Contacts(연락처) 필드에 새로운 항목을 추가해보는 겁니다.
<img src="https://velog.velcdn.com/images/paul_velog/post/c4bf4ad6-d9d8-4723-aed7-ecd8fa3112f9/image.png" alt=""></p>
<p>먼저 세팅에서 Import Data를 통해서 샘플 데이터를 Import 해줍니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/cd437b18-af53-45c0-a907-b757b9935f85/image.png" alt=""></p>
<p>이제 연락처에 샘플데이터가 생성되는데요, 여기서 아무 연락처를 고른다음 세부 정보를 확인해줍니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/82be7be9-d5ec-44c1-aba1-3cce3db7803c/image.png" alt=""></p>
<p>고객의 이름부터 연락처, 생일, 계좌번호 등등 많은 필드가 포함되어 있는데요 새로 추가할 항목은 고객의 <strong>대출 승인 가능 여부</strong>입니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/99466ea1-24ec-4404-aea7-be4eb87514bb/image.png" alt=""></p>
<p>먼저 우측 상단의 톱니바퀴 모양을 클릭해서 -&gt; SetUP 을 선택해줍니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/e5978f95-50c4-41d7-85c8-af4e0edabec9/image.png" alt=""></p>
<p>여기서 Home 옆에 있는 <code>Object Manager</code>를 선택해주면 다양한 오브젝트를 관리할 수 있는데요, 저희가 원하는건 연락처 관리니까 <code>Contact</code>를 선택해줍니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/08cbeb14-dbde-4da5-88a0-f4f71583bdb9/image.png" alt=""></p>
<p>여기서 <code>Field &amp; Relationships</code>를 선택하면 연락처 항목에 포함된 모든 필드들을 확인할 수 있는데요
오른쪽 위에 보시면 New 를 통해 새 필드를 생성할 수도 있습니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/6ad9b6a4-1b04-4e26-b5cb-2cf1483866aa/image.png" alt=""></p>
<p>New를 클릭하면 새로운 커스텀 필드에 대해 <strong>Data Type</strong> 을 설정할 수 있는 선택창과 그 옆에 설명이 적혀있습니다.</p>
<p>대출가능 여부는 Y/N 이기 때문에 체크박스(Checkbox) 타입이 좋아보이네요.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/9d7d7b2a-b1af-4ad9-9c8c-7cd90c72a2b9/image.png" alt=""></p>
<p>두번째 스텝으로 넘어가면 필드의 라벨, 이름, 디폴트값, 설명 등등을 설정할 수 있습니다. 대출가능 여부이기 때문에 <code>Prequalified?</code> 로 지었습니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/ef2c52dc-ba2c-466a-b92f-cbc5e242cf21/image.png" alt=""></p>
<p>세번째 스텝은 각종 보안관련 설정이기 때문에 일단 넘어가줍니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/77ab03c2-c9c1-478e-a2fd-05084b8d0bf5/image.png" alt=""></p>
<p>마지막으로 해당 필드를 포함할 레이아웃을 선택할 수 있는데요, 일단 모두 선택하고 Save 해줍니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/8a787d82-4083-4947-b7d0-80d5102983d9/image.png" alt=""></p>
<p>돌아와서 확인해주면 Prequalified? 라는 체크박스 형식의 필드가 추가되었음을 확인할 수 있습니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/3557dd00-dabb-4564-8b37-8edda987d9d1/image.png" alt=""></p>
<p>과제를 완료하면 이렇게 포인트를 주는데요
뱃지를 많이 획득할수록 세일즈포스 분야에서 어느정도 실력을 인정해준다고 합니다. </p>
<h4 id="salesforce-architecture">Salesforce Architecture</h4>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/d7d73467-c742-4619-9380-5e5e8f827206/image.png" alt=""></p>
<p>세일즈포스 플랫폼에는 정말 다양한 기능들이 있는데요 세일즈 포스의 아키텍처를 이해하려면 <strong>신뢰, 멀티테넌시, 메타데이터, API</strong> 등을 먼저 이해해야합니다.</p>
<ul>
<li>신뢰
세일즈포스는 클라우드 서비스 기업이기 때문에 무엇보다 신뢰가 중요합니다. 구체적으로 신뢰란 보안을 의미하는것 같습니다. 
예시로  AI 안전을 위해 Einstein Trust Layer를 구축하였고, 데이터 프라이버시나 거버넌스를 손상시키지 않고 회사 및 고객 데이터에 생성형 AI를 사용할 수 있도록 보안 조치를 추가하였다고 합니다.</li>
</ul>
<ul>
<li><p>멀티테넌시(Multitenancy)
<img src="https://velog.velcdn.com/images/paul_velog/post/5195e5ad-fb91-4f5d-8134-8b21c7a2c1b1/image.png" alt="">
멀티 테넌시(Multi-tenancy)는 소프트웨어 애플리케이션의 단일 인스턴스가 여러 고객에게 서비스를 제공하는 아키텍처를 말합니다.
아파트를 예로 설명하자면 입주민들이 물과 전력, 그리고 건물등을 공유하는 상황으로 비유할 수 있겠네요. 
클라우드 서비스의 기본이 되는 개념인것 같은데 여기서 핵심은 동일한 컴퓨팅 성능,데이터 저장소,및 핵심 기능을 제공하고 고객의 데이터를 안전하게 보장할 수 있도록 신뢰를 제공한다는 점입니다.</p>
</li>
<li><p>Data Cloud</p>
<blockquote>
<p>Data Cloud는 회사의 모든 데이터를 세일즈포스의 Einstein 1 Platform에 통합하는 데이터 플랫폼으로, 모든 팀이 고객을 종합적으로 파악하여 자동화 및 분석을 추진하고, 참여를 개인화하며, 신뢰할 수 있는 AI를 구현할 수 있도록 지원합니다. </p>
</blockquote>
</li>
</ul>
<p>여기서 핵심은 모든 데이터를 세일즈포스 플랫폼에서 이용할 수 있다! 입니다. </p>
<ul>
<li>메타데이터<blockquote>
<p>메타데이터는 시간이 지남에 따라 많은 양의 데이터를 수집, 저장 및 분석할 수 있도록 일관된 방식으로 구조화된, 다른 데이터를 설명하는 데이터입니다. 빅 데이터를 데이터 웨어하우스에 저장하여 쉽게 검색하고 관리하려면 메타데이터가 필요합니다.</p>
</blockquote>
</li>
</ul>
<p>추상적으로 어렵게 들릴 수 있는데요, <strong>일단 데이터에 대한 데이터</strong> 정도로 이해하면 될 것 같습니다.</p>
<ul>
<li><p>API</p>
<blockquote>
<p>API(application programming interface 애플리케이션 프로그래밍 인터페이스, 응용 프로그램 프로그래밍 인터페이스)는 컴퓨터나 컴퓨터 프로그램 사이의 연결이다. 일종의 소프트웨어 인터페이스이며 다른 종류의 소프트웨어에 서비스를 제공한다.</p>
</blockquote>
<p>API로 서로 다른 소프트웨어 조각이 서로 연결되고 정보를 교환할 수 있도록 하며, API 이름을 사용하여 찾고 있는 메타데이터와 데이터를 검색합니다.</p>
<p>세일즈포스에서의 API도 크게 의미가 다른것 같지 않습니다.</p>
</li>
</ul>
<h4 id="setup">Setup</h4>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/b88ad0a1-cf35-4848-89a8-c090e8ebde7f/image.png" alt=""></p>
<p>Setup(설정) 메뉴로 간편하게 작업하기 위해 
Setup(설정) 메뉴에는 Administration(관리), Platform Tools(플랫폼 도구) 및 Settings(설정)의 세 가지 주요 카테고리에 대해 알아보겠습니다.</p>
<ul>
<li>Administration(관리): 관리 범주는 사용자와 데이터를 관리하는 곳입니다. 사용자 추가, 권한 변경, 데이터 가져오기 및 내보내기, 이메일 템플릿 생성 등의 작업을 수행할 수 있습니다.</li>
<li>Platform Tools(플랫폼 도구): 플랫폼 도구에서 대부분의 사용자 정의를 수행합니다. 데이터 모델을 보고 관리하고, 앱을 만들고, 사용자 인터페이스를 수정하고, 사용자에게 새 기능을 배포할 수 있습니다. 프로그래밍 방식 개발을 시도하기로 결정한 경우 플랫폼 도구에서 코드도 관리할 수 있습니다.</li>
<li>Settings(설정): 마지막으로 설정에서 회사 정보 및 조직 보안을 관리할 수 있습니다. 업무 시간 추가, 로캘 변경, 조직 내역 보기 등의 작업을 수행할 수 있습니다.</li>
</ul>
<h4 id="appexchange">AppExchange</h4>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/df94a4cd-d498-4b43-89ca-fac044be2a02/image.png" alt=""></p>
<blockquote>
<p>AppExchange란 무엇인가요?
 Salesforce에는 Salesforce Platform의 유연성을 사용하여 누구나 사용할 수 있는 놀라운 앱 및 기타 솔루션을 구축하는 파트너 커뮤니티가 있습니다. 이러한 서비스/기능은 AppExchange에 설치할 수 있습니다(일부는 무료, 일부는 유료임).</p>
</blockquote>
<p>앱스토어처럼 새로운 앱을 설치하여 서비스와 기능을 추가할 수 있습니다. 설치한 앱은 다음과 같은 방법으로 찾아서 사용할 수 있습니다.</p>
<ul>
<li>Setup(설정)에서 Quick Find(빠른 찾기) 상자에서 Installed Packages(설치된 패키지)를 검색하고 선택합니다.</li>
<li>설치한 패키지 이름을 클릭합니다. AppExchange 다운로드 페이지의 이름과 동일합니다.</li>
<li>패키지에 대한 자세한 정보를 보려면 View Components(구성 요소 보기)를 클릭합니다. Package Details(패키지 세부 사항) 페이지에는 패키지의 사용자 정의 필드, 맞춤형 개체 및 Apex 클래스를 포함한 모든 구성 요소가 표시됩니다. 이 정보는 사용자 정의에 충돌이 있는지 여부를 판별하는 데 도움이 됩니다.</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Road to Trailblazer] CRM 101 (Salesforce, CRM)]]></title>
            <link>https://velog.io/@paul_velog/Road-to-Trailblazer-CRM-101-Salesforce-CRM</link>
            <guid>https://velog.io/@paul_velog/Road-to-Trailblazer-CRM-101-Salesforce-CRM</guid>
            <pubDate>Tue, 21 Jan 2025 19:03:44 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/paul_velog/post/1d66ccd6-6940-4d4f-8ff8-d313a6e8cfa2/image.png" alt=""></p>
<p>세일즈포스라는 분야에 관심이 생겨서 오늘부터 공부를 통해 정리해보고자 합니다. 정확히는 CRM(Customer Relationship Management: CRM) 이라는 분야인데요, 세일즈포스(Salesforce) 라는 기업이 해당 분야에서 세계적으로 가장 우수한 솔루션을 제공하는 기업이라고 합니다. 클라우드 서비스의 대명사로 AWS가 있는 것 처럼 <strong>CRM의 대명사로 세일즈포스</strong>가 있다고 생각하면 될 것 같습니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/c0ef2df8-cc0a-450d-b24e-e075e964f167/image.png" alt=""></p>
<p>제가 지원하려고 하는 청년 CRM101은 앞서 말씀드린 세일즈포스 개발자를 양성하는 과정인데요, 응시료가 비싼 자격증 지원부터 세일즈포스를 활용한 프로젝트까지 세일즈포스 개발자로 커리어를 시작하기에 매우 적합한 교육인것 같아보입니다.</p>
<p>그리고 세일즈포스 교육 자체가 매우 적고 수업료도 비싼데, 오히려 돈을 받으면서 체계적으로 교육을 받을 수 있다는점도 매리트인것 같네요. </p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/7711aa2e-6d0d-4386-b63a-288c210e0899/image.png" alt=""></p>
<p>CRM101 과정은 두가지 전형이 존재하는데요, 특이하게 프리패스 전형이 존재합니다. 바로 사전학습을 완료하면 <strong>서류전형 패스</strong>와 <strong>면접 가산점</strong>이라는 혜택을 준다고 합니다.
해당 과정이 4.5개월로 짧은데에 비해 교육할 내용은 매우 방대하기 때문에 혜택을 주면서까지 사전교육을 장려하는것 같습니다.</p>
<p>저로서는 세일즈포스를 경험해보고 지원 혜택까지 받을 수 있기 때문에 무조건 해야겠다! 싶었습니다 😶</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/3870b9fa-7fb7-4334-9128-3e8ad858e6a1/image.png" alt=""></p>
<p>이번 시리즈에서 다뤄볼 내용은 사전교육 과정인 <strong>Road to Trailblazer</strong>에 대한 내용인데요, 아마 CRM101 과정에 합류하게 된다면 시리즈가 더 길어질수도 있겠네요.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/74c2a5ea-5b28-4f49-8cc7-9c8543611bf1/image.png" alt=""></p>
<p>사전교육인 Road to Trailblazer 과정은 총 7일치 과정으로 구성되어 있습니다. </p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/ea225af2-a3a7-4ae8-a1c9-01a9c61fd2e2/image.png" alt=""></p>
<p>학습 플랜은 하루 분량의 학습 과제를 노션으로 정리해서 제공되며 <strong>1) About CRM, 2) Trailhead Study, 3) Basic IT Programming</strong> 등으로 구성되어있습니다. </p>
<p>저는 1,2번에 대해서는 거의 문외한이라 아마 About CRM과 Trailhead Study를 중심적으로 글을 정리할 것 같네요.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[2024년도 AWS와 함께하는 소중한 상명 해커톤 (1)]]></title>
            <link>https://velog.io/@paul_velog/2024%EB%85%84%EB%8F%84-AWS%EC%99%80-%ED%95%A8%EA%BB%98%ED%95%98%EB%8A%94-%EC%86%8C%EC%A4%91%ED%95%9C-%EC%83%81%EB%AA%85-%ED%95%B4%EC%BB%A4%ED%86%A4-1</link>
            <guid>https://velog.io/@paul_velog/2024%EB%85%84%EB%8F%84-AWS%EC%99%80-%ED%95%A8%EA%BB%98%ED%95%98%EB%8A%94-%EC%86%8C%EC%A4%91%ED%95%9C-%EC%83%81%EB%AA%85-%ED%95%B4%EC%BB%A4%ED%86%A4-1</guid>
            <pubDate>Mon, 13 Jan 2025 12:05:19 GMT</pubDate>
            <description><![CDATA[<p>2024년 8월에 참여했던 해커톤을 2024년이 끝난 지금에서야 리뷰하게 되었네요 ㅎㅎ 
처음 참여했던 해커톤이라 많이 떨리고 자극도 많이 받았던 기억이 있습니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/e477cfc3-2faa-43a3-add5-331d05f97dec/image.png" alt=""></p>
<p>&quot;AWS와 함께하는&quot; 부분에서 알 수 있듯이 AWS 사옥 방문은 물론 AWS 전문가분들이 제공하는 사전교육도 받을 수 있는 좋은 기회여서 바로 지원하게 되었습니다!</p>
<h4 id="행사일정">행사일정</h4>
<p>  1) 사전교육</p>
<ul>
<li><p>온라인 교육 : 8월 19일(월)~ 8월 23일(토) </p>
</li>
<li><p>오프라인 교육 : 8월 24일(토)</p>
</li>
</ul>
<p>2) 해커톤 대회 :  8월 30일(금)~8월 31일(토)</p>
<p>저는 해커톤 참여가 처음이라서 몰랐는데 해커톤 치고는 사전교육이 매우 체계적으로 되어있었습니다! (보통 해커톤에서는 사전교육을 제공하지 않는다고 합니다.)</p>
<p>먼저 해커톤에 참여하기 위해서는 AWS 온라인 교육을 통한 이수증이 필수인데요</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/92941e2a-cfd0-4950-8a1a-92e8e75a25b8/image.png" alt=""></p>
<p>저는 기존에 이수했던 교육이라 이수증을 바로 제출할 수 있었습니다.</p>
<h4 id="오프라인-교육">오프라인 교육</h4>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/e9bffc38-fc38-4de7-b717-7962185f8eaa/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/e760bc07-c1a1-4014-9266-c141eb68b4e6/image.png" alt=""></p>
<p>오프라인 교육은 역삼역에 있는 AWS Trainning Center에서 진행되었습니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/c5c905ff-c941-412a-aaef-f18f7f97f62a/image.jpg" alt=""></p>
<p>입구부터 호텔 뺨치는 시설에 감탄했습니다😧</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/b5acd08d-bb21-4fc5-add4-b616883f0bf5/image.jpg" alt=""></p>
<p>교육생들에게 제공된 임시 QR코드로 출입할 수 있었는데 뭔가 회사원이 된 것 같은 기분이었습니다. </p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/6de4d995-d142-4802-b104-9d4480780905/image.jpg" alt=""></p>
<p>사옥 입구도 너무 멋져서 한번 찍어봤습니다.
<img src="https://velog.velcdn.com/images/paul_velog/post/fa9f2f1e-04ee-4170-9513-5193352c75f6/image.png" alt=""></p>
<p>사전교육은 오전 10시부터 오후 5시까지 두가지 트랙으로 나누어서 진행되었습니다. </p>
<ul>
<li>Track 1(10시 ~ 오후 2시) : Bedrock 활용 Chat bot 개발(Gen AI 활용 - 텍스트 생성)</li>
</ul>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/db19d033-60d3-4b79-9158-b2a1427a7f4c/image.png" alt=""></p>
<p>첫번째 트랙은 AWS의 Bedrock이라는 서비스를 통해 Chat bot을 개발해보는 트랙이었습니다.</p>
<blockquote>
<p><em><strong>Amazon Bedrock이란 무엇인가요?</strong></em>
Amazon Bedrock은 통합을 통해 주요 AI 회사 및 Amazon의 고성능 파운데이션 모델(FMs)을 사용할 수 있도록 하는 완전 관리형 서비스입니다. 다양한 파운데이션 모델 중에서 선택하여 사용 사례에 가장 적합한 모델을 찾을 수 있습니다. </p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/dd3124bd-c628-467e-a57e-8cdaafdbaa5d/image.png" alt=""></p>
<p>AWS Bedrock으로 챗봇을 구현하고 Streamlit을 통해 UI를 제공하는데요 개인적으로 강사님께서 수업도 너무 잘해주시고 개발자로서 조언도 많이 해주셔서 재밌게 들었던것 같습니다.</p>
<ul>
<li>Track 2(2시 ~ 오후 5시) : Canva 활용 App 개발(Gen AI 활용 - 이미지 생성)</li>
</ul>
<p>Canva는 그래픽 디자인 플랫폼인데요 저도 공유 PPT 작업할때 종종 사용하곤 합니다. 그런데 여기서 나만의 App 서비스를 만드는 기능도 제공하는건 처음 알았네요!</p>
<p>실습에서 진행한건 Aws의 Lambda를 활용해서 Faceswap 기능을 제공하는 Canva App을 만드는거였는데 해당 실습은 환경설정에서 막혀서 제대로 구현해보지는 못했습니다.🥲</p>
<p>실습했던 내용들이 쓸만한 내용들이 많아서 나중에 따로 정리해볼 계획입니다!</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/cefa5d58-60f9-42f2-bed3-4797204c9880/image.png" alt=""></p>
<p>교육이 끝나고 집에 가는데 뭔가 교육내용도 알차고 시설도 너무 좋아서 집에 가는길이 아쉬웠습니다. </p>
<p>제가 사진같은건 잘 안찍는 편인데 오늘은 하루종일 사진만 찍었던것 같네요 ㅎㅎ.. (교육도 열심히 들었습니다)</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Github] 깃허브 프로필 꾸미기 _README]]></title>
            <link>https://velog.io/@paul_velog/Github-%EA%B9%83%ED%97%88%EB%B8%8C-%ED%94%84%EB%A1%9C%ED%95%84-%EA%BE%B8%EB%AF%B8%EA%B8%B0-README</link>
            <guid>https://velog.io/@paul_velog/Github-%EA%B9%83%ED%97%88%EB%B8%8C-%ED%94%84%EB%A1%9C%ED%95%84-%EA%BE%B8%EB%AF%B8%EA%B8%B0-README</guid>
            <pubDate>Wed, 18 Dec 2024 22:58:38 GMT</pubDate>
            <description><![CDATA[<p>현재 이곳저곳 지원서를 넣으면서 생각보다 포트폴리오나 github 등으로 간단한 자기소개를 요구하는 곳이 많더군요(미리 준비좀 해놓을걸🥲)</p>
<p>그래서 알아보던 중 Github에 Readme를 만들어 간단히 자기소개 할 수 있는 방법이 있었습니다!</p>
<p><strong>상당히 심심한 내 깃허브 메인..</strong>
<img src="https://velog.velcdn.com/images/paul_velog/post/fb304f4a-eced-4338-998c-fa50defcd681/image.png" alt=""></p>
<h3 id="readme-페이지-만들기">README 페이지 만들기</h3>
<p>Readme 페이지는 깃허브 프로필을 꾸미는 하나의 레포지토리라고 합니다? 신기하네요
만드는 방법은 간단합니다</p>
<p>먼저 레포지토리 생성으로 들어가서 <code>레포지토리 이름에 자신의 아이디</code>를 입력해줍니다.
<img src="https://velog.velcdn.com/images/paul_velog/post/e7146a18-1717-473a-b3bf-e9040a067f52/image.png" alt=""></p>
<p>및에 고양이 이모티콘과 함께 README를 만들어주는 special 레포지토리 라는 설명이 나옵니다. 신기하죠?
<img src="https://velog.velcdn.com/images/paul_velog/post/51bf4286-c027-4dcc-b336-1b6693faa88c/image.png" alt="">
공개 범위를 Public으로 설정하고 &quot;Add a README file&quot;에 체크해준 후 <code>Create repository</code> 눌러줍니다.
<img src="https://velog.velcdn.com/images/paul_velog/post/b44c5dda-14e5-4fae-8af9-1cb27a6b2cdf/image.png" alt="">
자 이제 메인이 README 파일로 바뀌었습니다. </p>
<h3 id="readme-꾸미기">README 꾸미기</h3>
<p>자 이제 수정 버튼을 눌러서 본격적으로 README 페이지를 꾸며 보겠습니다.
<img src="https://velog.velcdn.com/images/paul_velog/post/5c6f3fcf-4f32-4305-a912-97f8cb854a8b/image.png" alt="">
들어가보면 &quot;Hi there&quot; 부분 아래에 주석 처리 된 부분에 마크다운 양식(?)을 볼 수 있습니다. README는 마크다운 언어와 HTML으로 꾸밀 수 있다고 하네요. 
<img src="https://velog.velcdn.com/images/paul_velog/post/b11f06d5-448c-49a8-8b65-804dba5d24e0/image.png" alt=""></p>
<p>저는 깔끔한게 보기 좋아 보여서 (디자인에 자신이 없는것도 있지만..ㅎㅎ) 
마크업 언어 위주로 간단히 작성해보았습니다!
<img src="https://velog.velcdn.com/images/paul_velog/post/3313bca4-b56c-4cd4-818e-a3a983ea5121/image.png" alt=""></p>
<p>중간중간에 Preview로 디자인 봐가면서 수정해주시면 편합니다!
<img src="https://velog.velcdn.com/images/paul_velog/post/9d8acb7c-63c5-4e15-9e41-891ebf6a7672/image.png" alt=""></p>
<h3 id="결과물">결과물</h3>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/1a741526-7212-426f-9a18-3f415777b525/image.png" alt=""></p>
<p>이제 조금 덜 심심한 느낌이 드네요😊</p>
<p>찾아보면 화려하게 꾸밀 수 있는 다양한 기능이 있으니 검색을 통해 적용해보시면 되겠습니다!
<img src="https://velog.velcdn.com/images/paul_velog/post/c3936406-56f2-44a8-b887-b446dbcdc493/image.png" alt=""></p>
<p>귀찮으시다면 저처럼 간단하게 정리해놓고 차차 시간 날때마다 꾸며가는것도 나쁘지 않을것 같네요👍</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[Github] 레포지토리 삭제, 공개범위 변경]]></title>
            <link>https://velog.io/@paul_velog/Github-%EB%A0%88%ED%8F%AC%EC%A7%80%ED%86%A0%EB%A6%AC-%EC%82%AD%EC%A0%9C-%EA%B3%B5%EA%B0%9C%EB%B2%94%EC%9C%84-%EB%B3%80%EA%B2%BD</link>
            <guid>https://velog.io/@paul_velog/Github-%EB%A0%88%ED%8F%AC%EC%A7%80%ED%86%A0%EB%A6%AC-%EC%82%AD%EC%A0%9C-%EA%B3%B5%EA%B0%9C%EB%B2%94%EC%9C%84-%EB%B3%80%EA%B2%BD</guid>
            <pubDate>Thu, 12 Dec 2024 12:20:11 GMT</pubDate>
            <description><![CDATA[<p>오늘은 Github에서 레포지토리를 삭제하는 방법과 공개범위를 변경하는 방법에 대해 알아볼 예정입니다.</p>
<h3 id="공개-범위-변경">공개 범위 변경</h3>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/dfcbe924-ca72-4c26-826a-6cfe4ceaf9b6/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/ad48698d-653c-4641-bf6b-631b2de92144/image.png" alt=""></p>
<p>먼저 깃허브 레포지토리에 들어가면 레포지토리 이름 옆에 <code>public</code> 또는 <code>private</code> 으로 되어있는데, 이는 공개 범위를 의미합니다. 즉 <code>private</code>으로 되어있는 레포지토리는 권한이 있는 사용자만 볼 수 있는거죠.
<img src="https://velog.velcdn.com/images/paul_velog/post/c3015d83-6881-4a61-a7d7-7f0aa39364cc/image.png" alt="">
이제 변경을 원하는 레포지토리로 들어가면 상단에 Settings가 보일겁니다. 클릭해줍니다.</p>
<p><img src="https://velog.velcdn.com/images/paul_velog/post/493948bb-c24e-4c2a-a984-99b3bf6a61f5/image.png" alt=""></p>
<p>Settings 맨 하단에 <code>Danger Zone</code> 이 있습니다. 여기에 <code>Change visibility</code> 를 클릭해주면 됩니다.
<img src="https://velog.velcdn.com/images/paul_velog/post/4d2d6748-60ed-4a02-ae3f-83bb65b1da43/image.png" alt="">
<img src="https://velog.velcdn.com/images/paul_velog/post/bee6811e-0fbb-42b4-a0d6-9dbbd7c9cc5c/image.png" alt=""></p>
<h3 id="레포지토리-삭제">레포지토리 삭제</h3>
<p>이제 필요없는 레포지토리를 삭제해보겠습니다.</p>
<p>변경할때와 동일하게 삭제할 레포지토리의 Settings로 들어가 가장 하단의 <code>Danger Zone</code> 으로 가줍니다.
<img src="https://velog.velcdn.com/images/paul_velog/post/5d629a42-6582-4146-900d-a937b1a635d5/image.png" alt=""></p>
<p>몇 가지 확인사항 클릭 후 최종적으로 확인문구를 입력해줍니다. <img src="https://velog.velcdn.com/images/paul_velog/post/812ca39c-ab83-4992-8b4a-b1c4a61e5160/image.png" alt=""></p>
<p>생각보다 정말 간단하죠?😊 </p>
]]></description>
        </item>
    </channel>
</rss>