<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>prol.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Sun, 02 Feb 2025 07:34:35 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. prol.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/ssem-i" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[flutter 설치 오류]]></title>
            <link>https://velog.io/@ssem-i/flutter-%EC%84%A4%EC%B9%98-%EC%98%A4%EB%A5%98</link>
            <guid>https://velog.io/@ssem-i/flutter-%EC%84%A4%EC%B9%98-%EC%98%A4%EB%A5%98</guid>
            <pubDate>Sun, 02 Feb 2025 07:34:35 GMT</pubDate>
            <description><![CDATA[<pre><code>$ flutter doctor
# Unhandled exception:
PathAccessException: Cannot open file, path = &#39;/Users/NAME/.dart-tool/dart-flutter-telemetry-session.json&#39; (OS Error: Permission denied, errno = 13)</code></pre><p>flutter가 json 파일에 접근할 권한이 없어서 오류가 발생한다</p>
<pre><code>$ ls -l /Users/-/.dart-tool/dart-flutter-telemetry-session.json
# -rw-r--r--  1 root  staff  57  2  2 00:16 /Users/NAME/.dart-tool/dart-flutter-telemetry-session.json</code></pre><p>소유자 변경</p>
<pre><code>sudo chown NAME:staff /Users/semi/.dart-tool/dart-flutter-telemetry-session.json</code></pre><hr>

<pre><code>$ flutter doctor
# Doctor summary (to see all details, run flutter doctor -v):
[!] Flutter (Channel stable, 3.27.3, on macOS 15.2 24C101 darwin-arm64, locale
    ko-KR)
    ✗ Downloaded executables cannot execute on host.
      See https://github.com/flutter/flutter/issues/6207 for more information.
      Flutter requires the Rosetta translation environment on ARM Macs. Try
      running:
        sudo softwareupdate --install-rosetta --agree-to-license

[!] Android toolchain - develop for Android devices (Android SDK version 35.0.0)
    ! Some Android licenses not accepted. To resolve this, run: flutter doctor
      --android-licenses
[!] Xcode - develop for iOS and macOS (Xcode 16.2)
    ✗ Unable to get list of installed Simulator runtimes.
[✓] Chrome - develop for the web
[✓] Android Studio (version 2024.2)
[✓] IntelliJ IDEA Ultimate Edition (version 2024.3)
[✓] VS Code (version 1.96.0)
[✓] Connected device (3 available)
[✓] Network resources</code></pre><p>다음 세 가지 오류가 발생했다.
1)</p>
<pre><code># [!] Flutter (Channel stable, 3.27.3, on macOS 15.2 24C101 darwin-arm64, locale
    ko-KR)
    ✗ Downloaded executables cannot execute on host.</code></pre><p>Downloaded executables cannot execute on host. 
m2 arm이라서 일부 flutter 실행파일이 정상적으로 실행되지 않아 발생한 것 같다. Rosetta(x86 프로그램을 실행할 수 있도록 돕는 번역 프로그램)을 설치하여 해결한다.
$ sudo softwareupdate --install-rosetta --agree-to-licens</p>
<br>

<p>2)</p>
<pre><code># [!] Android toolchain - develop for Android devices (Android SDK version 35.0.0)
    ! Some Android licenses not accepted. </code></pre><p>Android 라이선스 미승인이 원인이다. 
$ flutter doctor --android-licenses
실행 후 모두 y를 입력</p>
<br>

<p>3)</p>
<pre><code># [!] Xcode - develop for iOS and macOS (Xcode 16.2)
    ✗ Unable to get list of installed Simulator runtimes. </code></pre><p>Xcode에서 최신 버전이 아니거나 iOS 시뮬레이터 관련 패키지 미설치가 원인이다.
$ xcodebuild -downloadPlatform iOS</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Mac ruby 설치]]></title>
            <link>https://velog.io/@ssem-i/Mac-ruby-%EC%84%A4%EC%B9%98</link>
            <guid>https://velog.io/@ssem-i/Mac-ruby-%EC%84%A4%EC%B9%98</guid>
            <pubDate>Sat, 14 Dec 2024 12:45:17 GMT</pubDate>
            <description><![CDATA[<p>기본 ruby 버전 확인 :</p>
<pre><code>$ ruby --version
# ruby 2.6.10p210 (2022-04-12 revision 67958) [universal.arm64e-darwin24]</code></pre><p>최신 버전 ruby 설치 :</p>
<pre><code>$ brew install ruby</code></pre><p>환경 변수에 추가 :</p>
<pre><code>sudo nano ~/.zshrc</code></pre><p>다음과 같이 작성 <code>export PATH=&quot;/opt/homebrew/opt/ruby/bin:$PATH&quot;</code> </p>
<p>설정 적용 :</p>
<pre><code>$ source ~/.zshrc</code></pre><p>설정 확인 :</p>
<pre><code>$ which ruby
# /opt/homebrew/opt/ruby/bin/ruby
$ ruby --version
# ruby 3.3.6 (2024-11-05 revision 75015d4c1f) [arm64-darwin24]</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[자식 요소 정렬]]></title>
            <link>https://velog.io/@ssem-i/%EC%9E%90%EC%8B%9D-%EC%9A%94%EC%86%8C-%EC%A0%95%EB%A0%AC</link>
            <guid>https://velog.io/@ssem-i/%EC%9E%90%EC%8B%9D-%EC%9A%94%EC%86%8C-%EC%A0%95%EB%A0%AC</guid>
            <pubDate>Fri, 29 Nov 2024 17:25:40 GMT</pubDate>
            <description><![CDATA[<p>justifyContent: &#39;center&#39; &gt; 자식 요소를 수직 가운데 정렬
alignItems: &#39;center&#39; &gt; 자식 요소를 수평 가운데 정렬</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[animated view]]></title>
            <link>https://velog.io/@ssem-i/animated-view</link>
            <guid>https://velog.io/@ssem-i/animated-view</guid>
            <pubDate>Fri, 29 Nov 2024 13:35:29 GMT</pubDate>
            <description><![CDATA[<p>ielist 스크롤 불가, 드래그 가능</p>
<pre><code>
case &#39;ielist&#39;:
        return (
          &lt;Animated.View
            style={[{ flex: 1 },{ transform: [{ translateY }] }]}
            {...panResponderList.panHandlers}
            &gt;


            &lt;View&gt;
            &lt;Text style={ {color:&#39;black&#39;, padding : 20}} &gt; ↑ &lt;/Text&gt;
            &lt;/View&gt;
            &lt;IEList /&gt;


          &lt;/Animated.View&gt;
        );
</code></pre><p>ielist 스크롤, 드래그 가능</p>
<pre><code>&lt;View style={{ flex: 1 }} {...panResponderList.panHandlers}&gt;

            &lt;View&gt;
            &lt;Text style={ {color:&#39;black&#39;, padding : 20}} &gt; ↑ &lt;/Text&gt;
            &lt;/View&gt;
            &lt;IEList /&gt;

          &lt;/View&gt;
</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[시스템 호출과 라이브러리 함수]]></title>
            <link>https://velog.io/@ssem-i/%EC%8B%9C%EC%8A%A4%ED%85%9C-%ED%98%B8%EC%B6%9C%EA%B3%BC-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-%ED%95%A8%EC%88%98</link>
            <guid>https://velog.io/@ssem-i/%EC%8B%9C%EC%8A%A4%ED%85%9C-%ED%98%B8%EC%B6%9C%EA%B3%BC-%EB%9D%BC%EC%9D%B4%EB%B8%8C%EB%9F%AC%EB%A6%AC-%ED%95%A8%EC%88%98</guid>
            <pubDate>Mon, 09 Sep 2024 13:06:29 GMT</pubDate>
            <description><![CDATA[<p>시스템 호출(System Call) : 사용자 모드에서 커널 모드로 전환</p>
<p>시스템 호출과 라이브러리 함수는 man으로 구별</p>
<p>man(Manual) : 페이지의 섹션 번호 </p>
<p>리눅스에서 사용하는 명령 : 섹션 1
시스템 호출 : 섹션 2
라이브러리 함수 : 섹션 3</p>
<p>$ man -s 2 uname</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[일급 함수, 콜백 함수, 함수 리턴, 커링]]></title>
            <link>https://velog.io/@ssem-i/%EC%9D%BC%EA%B8%89-%ED%95%A8%EC%88%98-%EC%BD%9C%EB%B0%B1-%ED%95%A8%EC%88%98-%ED%95%A8%EC%88%98-%EB%A6%AC%ED%84%B4-%EC%BB%A4%EB%A7%81</link>
            <guid>https://velog.io/@ssem-i/%EC%9D%BC%EA%B8%89-%ED%95%A8%EC%88%98-%EC%BD%9C%EB%B0%B1-%ED%95%A8%EC%88%98-%ED%95%A8%EC%88%98-%EB%A6%AC%ED%84%B4-%EC%BB%A4%EB%A7%81</guid>
            <pubDate>Sun, 24 Dec 2023 05:27:06 GMT</pubDate>
            <description><![CDATA[<h2 id="일급-함수">일급 함수</h2>
<p>일급 함수(일급 객체)는 변수처럼 다룰 수 있음</p>
<blockquote>
<pre><code>const print = function() {
    console.log(&#39;일급 함수 예제&#39;)
}
print();
const printAgain=print;
printAgain();</code></pre></blockquote>
<pre><code>![](https://velog.velcdn.com/images/ssem-i/post/c42ce329-8b3a-4e03-b5bf-7ff5a25b171c/image.png)


&gt;```
function plus(a,b){
    return a+b;
}
// 함수를  parameter로 받는 함수
function calculate(a, b, func){
    return func(a,b)
}
console.log(calculate(10,20,plus));</code></pre><p><img src="https://velog.velcdn.com/images/ssem-i/post/82813916-3fc5-49eb-bd8c-a58e7229ce69/image.png" alt=""></p>
<p>함수의 프로퍼티
caller - 호출 함수
length - 인자 개수
name
prototype - 프로토타입 객체의 참조
apply()/call()
함수 실행: this 값과 함수 인자 이용
bind(): 객체에 함수를 바인드</p>
<h2 id="callback-function">Callback function</h2>
<p>callback : 함수를 전달해서 상황에 따라 적절한 함수를 호출하도록 하는 것</p>
<p>예</p>
<ul>
<li>addEventListner()에 전달되는 함수 (이벤트 처리기)</li>
<li>타이머 함수에 전달되는 함수: setInterval(f(), tm); setTimeout(f(), tm);</li>
</ul>
<blockquote>
<pre><code>const sum = (a, b) =&gt; a + b;
const printResult = (result) =&gt; {
console.log(`결과는 ${result} 입니다.`);
};
const calculationAndPrint = (calculationResult, callback) =&gt; {
callback(calculationResult);
};
calculationAndPrint(sum(10, 20), printResult);</code></pre></blockquote>
<pre><code>![](https://velog.velcdn.com/images/ssem-i/post/7022fd10-a139-433c-abc0-b0b0d1b8248e/image.png)</code></pre><h2 id="함수-리턴">함수 리턴</h2>
<blockquote>
</blockquote>
<p>const returnFunction = () =&gt; (a, b) =&gt; a + b;
const plus = returnFunction();
console.log(plus(10, 20));</p>
<p><img src="https://velog.velcdn.com/images/ssem-i/post/ffc44c45-22c6-4e93-ace3-15fd8665caad/image.png" alt=""></p>
<p>인자를 받지않고 호출됨
인자 2개를 받아 합을 리턴하는 함수를 리턴</p>
<h2 id="고차-함수-higher-order-function">고차 함수 higher-order function</h2>
<p>함수를 인자로 받거나 함수를 반환하는 함수
예: Array.map() 메소드 - 배열 내 모든 요소를 인자로 제공받는 callback 함수를
호출하여 새로운 배열을 만듬</p>
<h2 id="커링-curring">커링 curring</h2>
<p> 인자를 여러 개 받는 함수를 분리하여 인자가 하나인 함수의 체인(중첩 함수)으로 만드는 방법
함수의 전달인자 몇 개를 미리 채워 더 간단한 함수를 만드는 방법
함수를 재사용하는데 유용하게 쓰일 수 있는 기법
매개 변수가 항상 비슷할 때 유용
외부 함수 인자는 변하지 않는 것
내부 함수 인자는 변하는 것</p>
<p>2개 이상의 화살표로 함수를 정의하는 것
화살표 개수만큼 인자(파라미터)를 전달해야 함
화살표 개수보다 적은 개수의 인자를 전달 받으면 함수를 리턴</p>
<blockquote>
</blockquote>
<pre><code>const coffeeMachine = liquid =&gt; espresso =&gt; `${espresso}+${liquid}`;
const americanoMachine = coffeeMachine(&#39;water&#39;);
const latteMachine = coffeeMachine(&#39;milk&#39;);
const americano = americanoMachine(&#39;americano : coffee bean&#39;);
const latte = latteMachine(&#39;latte : coffee bean&#39;);
console.log(americano);
console.log(latte);</code></pre><p><img src="https://velog.velcdn.com/images/ssem-i/post/0c1a721f-a8f8-4b20-9b93-89e82911ec18/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTML5 웹 폼 - input, select, textarea]]></title>
            <link>https://velog.io/@ssem-i/HTML5-%EC%9B%B9-%ED%8F%BC</link>
            <guid>https://velog.io/@ssem-i/HTML5-%EC%9B%B9-%ED%8F%BC</guid>
            <pubDate>Sun, 24 Dec 2023 05:23:49 GMT</pubDate>
            <description><![CDATA[<h2 id="폼-양식-활용">폼 양식 활용</h2>
<h3 id="폼-양식">폼 양식</h3>
<p>웹 페이지에서 사용자가 입력을 받는 다양한 형태의 폼 양식
로그인, 등록, 검색, 예약, 쇼핑 등
데이터를 넣을 수 있는 입력 필드를 가진 웹 페이지</p>
<h3 id="폼-요소">폼 요소</h3>
<p>폼을 만드는 다양한 태그
: *<em>input, textarea, select *</em></p>
<h3 id="폼-태그">폼 태그</h3>
<p>클라이언트가 웹 브라우저에서 데이터를 입력하고 웹 서버에 전달하기 위해 사용하는 태그
input. textarea. select 등의 폼 요소를 이용</p>
<ul>
<li><p><strong>형식</strong> </p>
<pre><code>&lt;form name=“폼의 이름 지정” action=“웹 서버 응용 프로그램의 url” method=“get | post” &gt;
여러 개의 폼 요소 작성 …
&lt;/form&gt;</code></pre><br>
</li>
<li><p><strong>속성</strong></p>
</li>
</ul>
<ol>
<li><p><strong>name</strong> : 폼의 이름 지정</p>
</li>
<li><p><strong>action</strong> - 폼 데이터를 처리할 웹 서버 응용 프로그램의 이름 URL. 주소.</p>
</li>
</ol>
<p><strong>submit 속성</strong>의 버튼이 눌리면 브라우저는 <strong>action</strong>에 지정된 웹 서버 응용프로그램 실행 요청
웹 서버 응용프로그램은 Java, JSP, PHP 등의 언어로 작성
action은 문법상 생략 가능하나 실행하려면 들어가야 한다</p>
<ol start="3">
<li><strong>method</strong> - 폼 데이터를 웹 서버로 전송하는 형식<ul>
<li><strong>GET</strong> : URL에 데이터를 붙여서 전송, 보안에 취약 &gt;&gt; 검색</li>
<li><strong>POST</strong> : 내부에 숨겨서 보내서 외부에서 볼 수 없음<br>

</li>
</ul>
</li>
</ol>
<h3 id="form-태그의-action과-a의-href-차이점">form 태그의 action과 a의 href 차이점</h3>
<p><strong>form</strong></p>
<blockquote>
<pre><code></code></pre></blockquote>
<form action="search.html" method="get">
<input type="text" name="query">
<input type="submit" value="검색">
</form>

<blockquote>
<p><a href="http://localhost:8080/search.html?query=%EC%9E%85%EB%A0%A5%ED%95%9C%EA%B2%80%EC%83%89%EC%96%B4">http://localhost:8080/search.html?query=입력한검색어</a></p>
</blockquote>
<p>페이지를 요청 + 데이터 전송 ( Ajax 사용 시 페이지 이동 없이 데이터 처리 가능 )<br><br></p>
<p><strong>href</strong></p>
<blockquote>
<pre><code>&lt;a href=&quot;search.html&quot;&gt;이동&lt;/a&gt;</code></pre></blockquote>
<blockquote>
<p> <a href="http://localhost:8080/search.html">http://localhost:8080/search.html</a></p>
</blockquote>
<p>페이지만 요청
<br></p>
<h2 id="1-input-태그">1. input 태그</h2>
<p>텍스트 입력 창 만든다
클라이언트가 웹 서버에 웹 페이지를 요청하면서 사용자가 입력한 데이터를 같이 보냄</p>
<ul>
<li><p><strong>형식</strong></p>
<pre><code>&lt;input type=&quot;속성?&quot; name=“폼 요소 이름” maxlength=“문자 개수”
size=“문자 개수” value=“초기 텍스트”&gt;</code></pre><br>
</li>
<li><p><strong>속성</strong></p>
</li>
</ul>
<ol>
<li><p><strong>type</strong> - 입력 요소의 종류 결정<br>
종류</p>
<ul>
<li><strong>text</strong> : 한 줄 짜리 입력 창</li>
<li><strong>password</strong> : 암호 입력 창. 사용자 입력 문자를 &#39;*&#39;와 같은 다른 문자로 출력</li>
</ul>
</li>
<li><p><strong>name</strong> - 폼 요소 이름, name 속성은 서버로 전달되는 이름
서버에서는 name 속성을 변수 이름처럼 생각해서 값을 참조
임의로 작성 가능</p>
</li>
<li><p><strong>maxlength</strong> - 폼 요소에 입력할 수 있는 문자의 최대 개수</p>
</li>
<li><p><strong>size</strong> - 입력 창의 크기, 단위는 문자 개수, 안 넣으면 브라우저별로 다를 수 있음(20)</p>
</li>
<li><p><strong>value</strong> - 폼 요소의 입력 창에 표시되는 초기 텍스트</p>
<br>

</li>
</ol>
<p><img src="https://velog.velcdn.com/images/ssem-i/post/7e13464e-b8c9-45e1-9b1e-84f54fa06392/image.png" alt="">
<br></p>
<h2 id="1-2-input---선택형-입력-태그">1-2. input - 선택형 입력 태그</h2>
<h3 id="1-라디오-버튼">1) <strong>라디오 버튼</strong></h3>
<p><code>&lt;input type= “radio” &gt;</code>
여러 항목 중 하나를 선택
name 속성 값이 같은 라디오버튼들이 하나의 그룹 형성한다</p>
<h3 id="2-체크박스">2) <strong>체크박스</strong></h3>
<p><code>&lt;input type= &quot;checkbox“ &gt;</code></p>
<ul>
<li><p><strong>형식</strong></p>
<pre><code>&lt;input type=“checkbox 또는 radio” name=“폼 요소 이름” value=“초기 텍스트” checked &gt;</code></pre></li>
<li><p><strong>속성</strong> </p>
</li>
<li><p><em>type*</em> – checkbox | radio</p>
</li>
<li><p><em>name*</em> - 폼 요소 이름</p>
</li>
<li><p><em>value*</em> - 폼 요소가 선택된 상태일 때, 웹 서버에 전송되는 값</p>
</li>
<li><p><em>checked*</em> - 이 속성이 있으면, 초기에 선택된 상태로 출력</p>
<br>

</li>
</ul>
<h2 id="2-콤보박스-select">2. 콤보박스 <code>&lt;select&gt;</code></h2>
<ul>
<li>여러 개의 항목이 나타나는 콤보 박스를 만들 때 사용</li>
<li><code>&lt;select&gt;</code> 태그 안에서 <code>&lt;option&gt;</code> 태그로 선택할 값들을 지정</li>
<li><code>&lt;option&gt;</code> 태그 안에 ‘selected’를 선언하면 해당 항목을 기본값으로 지정<br>

</li>
</ul>
<p>▼ select 태그와 option 태그 속성
<img src="https://velog.velcdn.com/images/ssem-i/post/6914fd4e-effb-49f2-9ab3-8b6bc0f6cf53/image.png" alt=""></p>
<blockquote>
<pre><code class="language-&lt;body&gt;">  Home &gt; Language &lt;hr&gt;
  &lt;form action=&quot;form_select2.html&quot; method=&quot;get&quot;&gt;
    &lt;fieldset style=&quot;width:150px&quot;&gt;
      &lt;legend&gt;언어 선택&lt;/legend&gt;
      &lt;p&gt;
        &lt;select name=&quot;language&quot;&gt;
          &lt;option value=&quot;choice&quot;&gt;=== 선택 ===&lt;/option&gt;
          &lt;option value=&quot;korean&quot;&gt;한국어&lt;/option&gt;
          &lt;option value=&quot;english&quot;&gt;영어&lt;/option&gt;
          &lt;option value=&quot;chinese&quot;&gt;중국어&lt;/option&gt;
          &lt;option value=&quot;japanese&quot;&gt;일본어&lt;/option&gt;
          &lt;option value=&quot;spanish&quot;&gt;스페인어&lt;/option&gt;
        &lt;/select&gt;
      &lt;/p&gt;
      &lt;br&gt;&lt;br&gt;
      &lt;input type=&quot;submit&quot; value=&quot;제출&quot;&gt;
      &lt;input type=&quot;reset&quot; value=&quot;초기화&quot;&gt;
    &lt;/fieldset&gt;
  &lt;/form&gt;</code></pre>
</blockquote>
</body>


<h4 id="폼-요소-그룹화">폼 요소 그룹화</h4>
<p><img src="https://velog.velcdn.com/images/ssem-i/post/6c401f29-e452-4396-9d27-3e3a4ae4edc4/image.png" alt=""></p>
<blockquote>
<pre><code>&lt;select name=&quot;...&quot;&gt;</code></pre></blockquote>
<option value="choice"> === 선택 === </option>
    <optgroup label="본인 국적">
        <option value="korean"> 대한민국 </option>
        <option value="USA"> 미국 </option>
        <option value="France"> 프랑스 </option>
    </optgroup>
</select>

<br>

<h2 id="3-textarea-태그">3. textarea 태그</h2>
<blockquote>
<pre><code>&lt;textarea cols=&quot;너비값&quot; cols=&quot;높이값&quot;&gt;&lt;/textarea&gt;</code></pre></blockquote>
<br>
▼ 속성

<p><img src="https://velog.velcdn.com/images/ssem-i/post/a04d98fd-2292-4070-95ac-6ab5e54a5c2b/image.png" alt=""></p>
<blockquote>
<pre><code class="language-&lt;form"></code></pre>
</blockquote>
<fieldset style="width:200px">
<legend> 자유게시판 </legend><p>
<textarea name="introduction" cols="30" rows="3"></textarea>
<div align="center">
<input type="submit" value=" 전송 "> &nbsp;
<input type="reset" value=" 취소 ">
</div>
</fieldset>
</form>
```
![](https://velog.velcdn.com/images/ssem-i/post/0e707453-4e76-43f7-8bbb-a91c606b85fd/image.png)

]]></description>
        </item>
        <item>
            <title><![CDATA[HTML5 기본 문서 - 표, table]]></title>
            <link>https://velog.io/@ssem-i/HTML5-%EA%B8%B0%EB%B3%B8-%EB%AC%B8%EC%84%9C-%EB%A6%AC%EC%8A%A4%ED%8A%B8</link>
            <guid>https://velog.io/@ssem-i/HTML5-%EA%B8%B0%EB%B3%B8-%EB%AC%B8%EC%84%9C-%EB%A6%AC%EC%8A%A4%ED%8A%B8</guid>
            <pubDate>Sun, 24 Dec 2023 04:51:59 GMT</pubDate>
            <description><![CDATA[<h2 id="테이블-구성-요소">테이블 구성 요소</h2>
<ol>
<li><p><code>&lt;table&gt; … &lt;/table&gt;</code> : 표 전체</p>
<blockquote>
<p><code>&lt;table border=“1”&gt;</code> border 속성은 1픽셀 크기의 테두리를 표시함</p>
</blockquote>
</li>
<li><p><code>&lt;caption&gt; … &lt;/caption&gt;</code> : 표의 제목</p>
</li>
<li><p><code>: &lt;tr&gt; … &lt;/tr&gt;</code> : 표는 여러 행으로 구성, 한 행은 여러 열로 구성</p>
</li>
<li><p><code>&lt;th&gt; … &lt;/th&gt;</code> : 제목 정보를 가진 열 </p>
</li>
<li><p><code>&lt;td&gt; … &lt;/td&gt;</code> : 데이터 정보를 가진 열</p>
</li>
</ol>
<p><img src="https://velog.velcdn.com/images/ssem-i/post/af6e7ee6-4b5b-4ba1-b5a1-7e0793270cf5/image.png" alt=""></p>
<h2 id="테이블-셀-합치기">테이블 셀 합치기</h2>
<p><strong>rowspan</strong> : 상하로 합침
<strong>colspan</strong> : 좌우로 합침</p>
<blockquote>
<p><code>&lt;td rowsapn=&quot;2&quot;&gt;...&lt;/td&gt;</code>
  <code>&lt;td colspan=&quot;4&quot;&gt;...&lt;/td&gt;</code></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[HTML5 기본 문서 - 이미지, 오디오, 비디오, 하이퍼링크]]></title>
            <link>https://velog.io/@ssem-i/HTML5-%EA%B8%B0%EB%B3%B8-%EB%AC%B8%EC%84%9C-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%98%A4%EB%94%94%EC%98%A4-%EB%B9%84%EB%94%94%EC%98%A4-%ED%95%98%EC%9D%B4%ED%8D%BC%EB%A7%81%ED%81%AC</link>
            <guid>https://velog.io/@ssem-i/HTML5-%EA%B8%B0%EB%B3%B8-%EB%AC%B8%EC%84%9C-%EC%9D%B4%EB%AF%B8%EC%A7%80-%EC%98%A4%EB%94%94%EC%98%A4-%EB%B9%84%EB%94%94%EC%98%A4-%ED%95%98%EC%9D%B4%ED%8D%BC%EB%A7%81%ED%81%AC</guid>
            <pubDate>Sun, 24 Dec 2023 04:49:34 GMT</pubDate>
            <description><![CDATA[<h2 id="1-이미지-태그">1. 이미지 태그</h2>
<p><strong>gif</strong>
무손실 압축, 256가지 제한된 색상 사용
애니메이션 지원
<strong>jpg</strong>
손실 압축으로 이미지의 압축 효율이 좋음
사진 이미지를 저장하는데 주로 사용
<strong>png</strong>
원본 손실이 없는 무손실 압축으로 트루 컬러(24비트), 투명 이미지 지원
jpg에 비해 압축 효율이 좋지 않음
일반적으로 웹에서 가장 많이 사용</p>
<ul>
<li>형식</li>
</ul>
<pre><code>&lt;img src=“이미지 파일의 경로&quot; width=“이미지 폭” height=“이미지 높이”
title =“이미지 설명” &gt;</code></pre><ul>
<li>속성</li>
<li><em>src*</em> - 삽입하는 이미지 파일의 경로를 지정하는 필수 속성</li>
<li><em>width*</em> - 이미지의 가로 크기로, 생략 시 원본 이미지의 크기로 삽입됨, 단위는 픽셀수</li>
<li><em>height*</em> - 이미지의 높이로, 생략하면 원본 이미지의 크기로 삽입됨, 단위는 픽셀수</li>
<li><em>title*</em> - 이미지에 마우스 포인터를 갖다 대었을 때 표시할 설명 </li>
<li><em>alt*</em> : 이미지가 없거나 손상 등 출력할 수 없는 경우 출력할 문자열. 필수 속성<blockquote>
<p><img src="https://velog.velcdn.com/images/ssem-i/post/c9c65648-72ef-4a47-be50-d327bfb00763/image.png" alt=""></p>
</blockquote>
</li>
</ul>
<br>

<h3 id="url">URl</h3>
<p>웹 문서에 사용하는 파일의 위치를 나타냄</p>
<ul>
<li><p><strong>절대 경로</strong>
http://로 시작
인터넷 상에 하나 뿐인 고유한 경로</p>
</li>
<li><p><strong>상대 경로</strong>
현재 폴더 위치를 기준으로 대상 파일이나 폴더의 위치를 지정
서버의 폴더 구조나 도메인 변경 및 웹 페이지 제작, 수정에 편리
주로 사용</p>
<br>

</li>
</ul>
<h2 id="2-오디오-파일-재생">2. 오디오 파일 재생</h2>
<p>▼ HTML5에서 재생 가능한 오디오 타입
<img src="https://velog.velcdn.com/images/ssem-i/post/b34dcca7-2b5d-441b-893d-59bf8b11fd0d/image.png" alt=""> </p>
<h3 id="audio-태그"><code>&lt;audio&gt;</code> 태그</h3>
<ul>
<li>형식     <pre><code>&lt;audio src=“오디오 파일 경로&quot; controls autoplay loop&gt;
이 태그를 지원하지 않는 브라우저가 출력하는 메시지
&lt;/audio &gt; </code></pre></li>
<li>속성</li>
<li><em>src*</em> - 삽입하는 오디오 파일의 경로를 지정</li>
<li><em>controls*</em> - 이 속성이 설정되면 재생, 재생시간, 중단, 음소거 등 제어 버튼 출력</li>
<li><em>autoplay*</em> - 이 속성이 설정되면 오디오 로딩 즉시 재생
<del>최신 브라우저의 경우 보안 상의 이유로 자동 재생이 안될 수 있음</del></li>
<li><em>loop*</em> - 이 속성이 설정되면 반복 재생<br>

</li>
</ul>
<h3 id="source-태그"><code>&lt;source&gt;</code> 태그</h3>
<p>브라우저 마다 지원하는 오디오 파일의 종류가 다르므로 <code>&lt;audio&gt;</code>태그를 사용할 때 <code>&lt;source&gt;</code> 태그를 사용함</p>
<ul>
<li><strong>형식</strong><pre><code>&lt;audio controls autoplay loop&gt;
&lt;source src=“오디오 파일명(.mp3)” type=“비디오 마임 타입(audio/mpeg)”&gt;
&lt;source src=“오디오 파일명(.wav)” type=“비디오 마임 타입(audio/wav)”&gt;
&lt;source src=“오디오 파일명(.ogg)” type=“비디오 마임 타입(audio/ogg)”&gt;
&lt;/audio &gt; </code></pre><br>

</li>
</ul>
<h2 id="3-비디오-파일-재생">3. 비디오 파일 재생</h2>
<p>▼ HTML5에서 재생 가능한 비디오 타입
<img src="https://velog.velcdn.com/images/ssem-i/post/99f4e977-0a4d-4e5f-84d6-f7d4d5dfb655/image.png" alt="">
하나의 비디오를 여러 타입으로 만들어 두면 브라우저가 재생 가능한 타입을 선택함
<br></p>
<h3 id="video-태그"><code>&lt;video&gt;</code> 태그</h3>
<ul>
<li><strong>형식</strong>
&lt;video src=“비디오 파일 경로” width=“동영상의 너비”
height=“비디오 재생 영역의 높이” controls autoplay muted loop&gt;
이 태그를 지원하지 않는 브라우저가 출력하는 메시지</video> </li>
<li><strong>속성</strong></li>
<li><em>src*</em> - 삽입하는 비디오 파일의 경로를 지정</li>
<li><em>width, height*</em> - 생략되면 비디오의 원본 크기로 설정</li>
<li><em>controls*</em> - 이 속성이 설정되면 재생, 재생시간, 중단, 음소거 등 제어 버튼 출력</li>
<li><em>autoplay*</em> - 이 속성이 설정되면 비디오 로딩 즉시 재생</li>
<li><em>muted*</em> - 오디오를 끌 때 사용</li>
<li><em>loop*</em> - 이 속성이 설정되면 반복 재생<br>

</li>
</ul>
<h3 id="source-태그와-사용"><code>&lt;source&gt;</code> 태그와 사용</h3>
<pre><code>&lt;video width=“동영상의 너비” height=“동영상의 높이” controls autoplay loop&gt;
&lt;source src=“비디오 파일명(.mp4)” type=“비디오 마임 타입(video/mp4)”&gt;
&lt;source src=“비디오 파일명(.webm)” type=“비디오 마임 타입(video/webm)”&gt;
&lt;source src=“비디오 파일명(.ogg)” type=“비디오 마임 타입(video/ogg)”&gt;
&lt;/video &gt; </code></pre><br>

<h2 id="4-하이퍼링크-태그">4. 하이퍼링크 태그</h2>
<p>같은 웹 사이트의 다른 HTML 페이지 연결
다른 웹 사이트의 HTML 페이지 모두 연결 가능</p>
<ul>
<li><strong>형식</strong><pre><code>&lt;a href=“url” target=“윈도우 이름”&gt; 텍스트 혹은 이미지 &lt;/a&gt;</code></pre></li>
<li><strong>속성</strong></li>
<li><em>href*</em> : 이동할 HTML 페이지의 주소(url)</li>
<li><em>target*</em> : 링크에 연결된 HTML 페이지가 출력될 윈도우 이름 지정<br>
target = <strong>“_blank”</strong> : 새로운 탭 또는 새로운 창에서 링크 열기
target = <strong>“_self”</strong> : 현재 탭 또는 현재 창에서 링크 열기(기본값)</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[2-2.HTML5]]></title>
            <link>https://velog.io/@ssem-i/2-2.HTML5</link>
            <guid>https://velog.io/@ssem-i/2-2.HTML5</guid>
            <pubDate>Tue, 19 Dec 2023 13:40:18 GMT</pubDate>
            <description><![CDATA[<h3 id="html5-출현-배경">HTML5 출현 배경</h3>
<p>*<em>1. 비표준 기술의 혼재, 웹 브라우저의 비 호환성 *</em></p>
<li>Active-X나 플러그인, 플래시 등 비표준 기술 난립</li>
<li>브라우저 사이에 HTML 문서와 웹 자원에 대한 심각한 비호환성</li>

<p><strong>2. 인터넷 기기의 다양화</strong></p>
<li>PC, 모바일 단말기 등에서 웹 사용</li>
<li>기존의 웹 페이지가 모바일 기기에서 작동하지 않음</li>


<p><strong>3. 새로운 범용 웹 표준의 필요성</strong></p>
<li>비표준 기술에 의존하는 PC 위주의 기존 웹 방식의 한계</li>
<li>모바일과 PC에서 동시에 사용 가능한 범용 웹 표준 필요성 대두</li>
<br>

<h3 id="html5-표준과-의의">HTML5 표준과 의의</h3>
<ul>
<li><strong>HTML5 표준 제정</strong>
W3C와 하이퍼텍스트 워킹 그룹</li>
<li><strong>표준에 담긴 내용</strong><ul>
<li>HTML5, CSS3, JavaScript로 분리 개발<ul>
<li>HTML 태그에서 문서 모양과 관련된 태그, 속성 폐기</li>
<li>웹 페이지의 플랫폼이나 장치 의존성 제거</li>
<li>문서 작성의 개념을 넘어 웹 애플리케이션 </li>
<li>작성을 지원하는 JavaScript API 표준화</li>
</ul>
</li>
</ul>
</li>
</ul>
<h4 id="html5-이전과-도입-후-비교">HTML5 이전과 도입 후 비교</h4>
<p><img src="https://velog.velcdn.com/images/ssem-i/post/e5199150-cc22-4597-8047-fab242c4a598/image.png" alt="">
<br></p>
<h3 id="html5의-기능">HTML5의 기능</h3>
<p>웹 문서 작성을 위한 HTML 태그 셋
웹 애플리케이션 작성을 위한 API</p>
<ul>
<li>웹 폼</li>
<li>오디오, 비디오</li>
<li>캔버스</li>
<li>SVG</li>
<li>웹 스토리지</li>
<li>웹 SQL 데이터베이스</li>
<li>인덱스 데이터베이스</li>
<li>파일 입출력</li>
<li>위치 정보</li>
<li>웹 워커</li>
<li>웹 소켓</li>
<li>오프라인 웹 애플리케이션<br>

</li>
</ul>
<h3 id="html5-문서-편집">HTML5 문서 편집</h3>
<ul>
<li><p><strong>텍스트 편집기</strong>
메모장, 한글 워드
Atom, Eclipse, Sublime Text, VS code, NotePad++
HTML, CSS3, JavaScript 파일 모두 UTF-8</p>
</li>
<li><p><strong>WYSIWYG(what you see is what you get) 편집기</strong>
Adobe의 Dreamweaver, CotteeCup, FCKeditor
HTML5 태그 정보 제공
출력되는 모습 보면서 작성 가능
간단한 오류 확인</p>
</li>
</ul>
]]></description>
        </item>
        <item>
            <title><![CDATA[2.웹 페이지 구성]]></title>
            <link>https://velog.io/@ssem-i/%EC%9B%B9-%ED%8E%98%EC%9D%B4%EC%A7%80-%EA%B5%AC%EC%84%B1</link>
            <guid>https://velog.io/@ssem-i/%EC%9B%B9-%ED%8E%98%EC%9D%B4%EC%A7%80-%EA%B5%AC%EC%84%B1</guid>
            <pubDate>Tue, 19 Dec 2023 13:07:13 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/ssem-i/post/b5fc87c3-8684-4e61-8fbb-756eeb9a6c3d/image.png" alt=""></p>
<h3 id="웹-페이지">웹 페이지</h3>
<p>웹 브라우저에서 보는 각각의 화면
<br></p>
<h3 id="웹-페이지-구성과-기능">웹 페이지 구성과 기능</h3>
<p><img src="https://velog.velcdn.com/images/ssem-i/post/c5763edc-b28c-4469-a765-ab58eddb70bf/image.png" alt="">
<br></p>
<h4 id="html">HTML</h4>
<li>웹 페이지 문서구조와 내용</li>
<li>HTML 태그로 작성</li>
<br>

<h4 id="css">CSS</h4>
<li>웹 페이지의 출력 모양 구성</li>
<li>CSS 언어로 작성</li>
<li>글자 크기와 색, 배경색, 문단의 여백 등을 지정</li>
<br>

<h4 id="javascript">JavaScript</h4>
<li>웹 페이지 내의 동적 변경 및 응용 프로그램 작성</li>
<li>JavaScript 언어로 작성</li>
<li>사용자의 마우스나 키보드 입력에 따라 웹 페이지를 동적으로 변경시키거나 게임, 지도 위치 서비스, 그래픽 등 다양한 응용프로그램 구현</li>
<br>

<h3 id="웹의-기본-목적">웹의 기본 목적</h3>
<p>다른 여러 컴퓨터에서 문서를 공유하거나 읽기
상웹 문서 : 웹에서 다루는 문서
<br></p>
<h3 id="웹의-구성">웹의 구성</h3>
<li><b>웹 서버</b></li>
- 웹 사이트를 탑재하는 컴퓨터 (구글, 네이버 등)
<br>
- 웹 문서, 이미지, 동영상 등의 데이터 저장 관리
<br>
- 웹 클라이언트의 요청을 받아 웹 문서 전송
웹 서버로 작동하도록 하는 소프트웨어 실행
<li><b>웹 클라이언트</b></li>
- 사용자 인터페이스 담당<br>
- 웹 서버에 웹 문서를 요청하고 받아 사용자에게 출력
<br>

<h3 id="웹-페이지의-주소-url">웹 페이지의 주소, URL</h3>
<p><img src="https://velog.velcdn.com/images/ssem-i/post/ec525024-eadc-4a3f-a610-4cab9afd4848/image.png" alt=""></p>
<li><b>프로토콜</b> : HTTP, https, ftp, telnet, mailto, news 등</li>

<li><b>서버주소</b> : 웹 페이지를 가진 컴퓨터의 인터넷 주소, IP주소</li>
<li><b>TCP/IP 포트 번호</b> : 서버가 브라우저로부터 접속을 기다리는 TCP/IP 포트 번호. 프로토콜 마다 다르며, HTTP의 경우 80, telnet은 23</li>
<li><b>경로명</b> : 웹 서버 내 웹 페이지 파일의 폴더 경로</li>
<li><b>파일 이름</b> : 웹 페이지의 HTML 파일 이름</li>
<br>

<h3 id="http-세션">HTTP 세션</h3>
<p><img src="https://velog.velcdn.com/images/ssem-i/post/ddc26a5b-b413-49d9-a6a1-ca873b5083a5/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[1.웹의 개요]]></title>
            <link>https://velog.io/@ssem-i/%EC%9B%B9%EC%9D%98-%EA%B0%9C%EC%9A%94</link>
            <guid>https://velog.io/@ssem-i/%EC%9B%B9%EC%9D%98-%EA%B0%9C%EC%9A%94</guid>
            <pubDate>Tue, 19 Dec 2023 12:25:20 GMT</pubDate>
            <description><![CDATA[<h3 id="인터넷">인터넷</h3>
<p>모든 컴퓨터가 IP 주소를 부여 받고 이 주소로 서로 연결하는 통신의 기본 체계로 웹의 개념이 나오기 전부터 만들어진 컴퓨터 연결 네트워크</p>
<h3 id="인터넷을-활용하는-응용-서비스-사례">인터넷을 활용하는 응용 서비스 사례</h3>
<li>전자우편</li>
<li>WWW(World Wide Web, 웹)</li>
<li>파일 전송(ftp)</li>
<li>채팅</li>
<li>스트리밍 서비스</li>
<li>인터넷 전화기</li>
<br>

<h3 id="웹">웹</h3>
<p>인터넷을 활용하는 응용 서비스
웹 브라우저를 통해 글자, 이미지, 동영상, 음성 등의 데이터를 사용자에게 제공하거나, 사용자와 컴퓨터 또는 사용자 상호 간에 소통하게 해주는 서비스
<br></p>
<h3 id="웹-서버">웹 서버</h3>
<p>인터넷과 같은 네트워크를 통해 클라이언트가 요청하는 서비스를 제공하는 컴퓨터
<br></p>
<h3 id="클라이언트">클라이언트</h3>
<p>원격의 웹 서버에 서비스를 요청하는 컴퓨터 또는 컴퓨터 사용자
<br></p>
<h3 id="서버와-클라이언트">서버와 클라이언트</h3>
<ol>
<li>클라이언트가 웹 페이지의 주소(URL, uniform resource locator 입력</li>
<li>서버는 요청 받은 데이터를 클라이언트의 컴퓨터에 전송</li>
<li>클라이언트의 웹 브라우저는 서버가 전송한 데이터를 해석하여 화면에 표시<br>
### 웹 브라우저
웹 서버에 접속해서 웹 페이지, 이미지, 동영상, 음악 등의 데이터를 다운받아 보여주는 소프트웨어
#### 웹 브라우저 종류
![](https://velog.velcdn.com/images/ssem-i/post/e210b090-01bd-4ece-b36b-c51d42587e5e/image.png)


</li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[forEach()]]></title>
            <link>https://velog.io/@ssem-i/forEach</link>
            <guid>https://velog.io/@ssem-i/forEach</guid>
            <pubDate>Mon, 04 Dec 2023 12:23:16 GMT</pubDate>
            <description><![CDATA[<p>const userList = [
    { name: &#39;a&#39;, age: 21, score: 100 },
    { name: &#39;b&#39;, age: 13, score: 95 },
    { name: &#39;c&#39;, age: 25, score: 76 },
    ];</p>
<p>userList.forEach(function(user){
    console.log(user);
});
console.log(&#39;---&#39;);
userList.forEach(user =&gt; console.log(user));</p>
]]></description>
        </item>
    </channel>
</rss>