<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>hyunseok-j.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Wed, 28 Jul 2021 09:37:24 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>hyunseok-j.log</title>
            <url>https://images.velog.io/images/hyunseok-j/profile/a971d65d-7198-4299-95fc-6b5a1479d483/social.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. hyunseok-j.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/hyunseok-j" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[HTML 기본]]></title>
            <link>https://velog.io/@hyunseok-j/HTML-%EA%B8%B0%EB%B3%B8</link>
            <guid>https://velog.io/@hyunseok-j/HTML-%EA%B8%B0%EB%B3%B8</guid>
            <pubDate>Wed, 28 Jul 2021 09:37:24 GMT</pubDate>
            <description><![CDATA[<h2 id="html-이란">HTML 이란?</h2>
<p>마크업 언어로 작성된 웹 브라우저 상에 표현될 <code>content의 구조, 짜임</code>을 정의한 문서를 말한다.  </p>
<h2 id="html-구성">HTML 구성</h2>
<pre><code class="language-HTML">&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;ko&quot;&gt;
  &lt;head&gt;
    &lt;meta charset=&quot;utf-8&quot;&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width&quot;&gt;

    &lt;title&gt;JS Bin&lt;/title&gt;
  &lt;/head&gt;

  &lt;body&gt;
    &lt;!-- comment --&gt; 
    &lt;!-- implementaion --&gt; 
  &lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>HTML 문서들을 기본적으로 위와 같은 형태를 가진다. </p>
<h3 id="설-명">설 명</h3>
<h3 id="📌-doctype-html">📌 <code>&lt;!DOCTYPE html&gt;</code></h3>
<p>코드의 처음 <code>&lt;!DOCTYPE html&gt;</code> 으로 현재 작성하는 <strong>문서(doc)가 HTML 타입</strong> 임을 선언해 알린다. </p>
<h3 id="📌-head">📌 <code>&lt;head&gt;</code></h3>
<p>사용자에게 보여지는 UI 요소가 아닌 <strong>현재 HTML 문서에 대한 *<em><code>meta</code> *</em>정보</strong> 를 표기한다. </p>
<p>인코딩 <code>utf-8</code>,  적용할 style sheets, 적용할 scripts 와 탭에 표시되는 title 등을 정할 수 있다. </p>
<h3 id="📌-body">📌 <code>&lt;body&gt;</code></h3>
<p>사용자에게 보여지는 UI에 관련된 것을 표현하는 곳이다. </p>
<h3 id="💎-용어-정리">💎 용어 정리</h3>
<p>메타 정보 외에는 보통 <code>열린 tag</code>, <code>content</code>, <code>닫힌 태그</code> 
의 구성으로 원하는 정보를 표현한다. </p>
<p><img src="https://images.velog.io/images/hyunseok-j/post/53690d1a-8554-4c29-8b7a-ff0db9ca49eb/tag_element.png" alt=""></p>
<ul>
<li><p><strong>열린 tag</strong>
웹문서에 <strong>배치 영역을 구분</strong>하는 역할을 하거나 뒤에 나오는 Content가 <em>링크</em> 와 같은 어떤 <strong>기능을 부여</strong>하는 역할을 하는 것을 의미한다.
<code>&lt;a&gt;</code>처럼 <code>&lt;tagName&gt;</code> 형태로 <u>태그 이름을 &lt;&gt; 안에 표기</u>하면 된다. </p>
<br>

<p> 📣 <strong>속성 (attribute)</strong></p>
<blockquote>
<p>기존 정의된 tag 에 detail 한 설정이 가능토록 해주는 것을 의미한다. </p>
</blockquote>
<ul>
<li>tag 의 스타일을 변경 (font 사이즈, 컬러, image 폭, 높이)</li>
<li>특정 id 를 부여해 독립적으로 처리 가능하게 분리</li>
<li>공통 속성 부여를 위해 class 단위 처리 등<br>  
</li>
</ul>
</li>
<li><p><strong>Content</strong><br>웹문서에 표현하고 싶은 text 정보를 의미한다.<br>열린 tag에 의해 tag 정의로 style 이 변경되거나 문서상 배치 영역 구분(sectioning)이 될 수 있다. </p>
<br>  </li>
<li><p><strong>닫힌 tag</strong>
상응되는 열린 tag가 적용되는 곳의 마지막을 의미한다. </p>
</li>
</ul>
<pre><code class="language-html">&lt;!-- 상응되는 tag 만난 경우 --&gt; 
&lt;div class=&quot;my-header&quot;&gt; My Content &lt;/div&gt;

&lt;!-- 옳지 못한 tag가 입력된 경우 --&gt;
&lt;div class=&quot;my-header&quot;&gt; My Content &lt;/a&gt; </code></pre>
  <hr> 


<h2 id="주요-tag">주요 Tag</h2>
<p>tag 는 2가지 기준으로 분류가 가능하다. </p>
<blockquote>
<ul>
<li><strong>Box</strong> 와 <strong>Item</strong> <br>
<strong>Box 태그</strong>
CSS없이 사용자에게 보이지 않으면서 다른 특별한 기능없이 
Tag 로 둘러싸인 Content 가 웹페이지의 어느 곳에 위치하는지 
<strong>영역 구분</strong> 역할 수행 <br>
** Item 태그**
<strong>사용자에게 보이면서</strong> 링크나 플레이어 같은 <strong>태그별 기능</strong>을 수행</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li><strong>Block</strong> 과 <strong>Inline</strong> <br>
<strong>Block Level</strong>
부모 Tag를 기준으로 <strong>가로 한 줄을 전부 차지</strong> 하는 Tag
<img src="https://images.velog.io/images/hyunseok-j/post/37c5a0e5-f43e-4be5-80c4-4fd39e5ce23e/%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7%202021-07-28%20%EC%98%A4%ED%9B%84%206.06.37.png" alt="">
<strong>Inline Level</strong>
  부모 Tag를 기준으로 다음에 올 Tag가 부모 Tag의 가로 길이를 넘지 않는다면 <strong>가로 한 줄을 공유</strong> 하는 Tag
<img src="https://images.velog.io/images/hyunseok-j/post/765ddfd8-5786-4574-8909-9ada565fe16a/%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7%202021-07-28%20%EC%98%A4%ED%9B%84%206.08.00.png" alt=""></li>
</ul>
</blockquote>
<p><img src="https://images.velog.io/images/hyunseok-j/post/a0c2e887-cf42-4dd7-bdd7-7c3f22360314/%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7%202021-07-28%20%EC%98%A4%ED%9B%84%205.46.07.png" alt=""><hr></p>
<h2 id="semantic-tag-란">Semantic Tag 란?</h2>
<p>  Tag 의 이름만으로 그 Tag 의 역할, 대략적인 위치 등의 의미를 전달하는 Tag를 뜻한다. </p>
<h3 id="왜-semantic-tag-를-사용해야-할까">왜 Semantic Tag 를 사용해야 할까?</h3>
<p>  non-semantic tag 인 <code>&lt;div&gt;</code>와 <code>&lt;span&gt;</code>으로만 이루어진 HTML 파일이 있다고 생각해보자. <br>
  그 HTML 파일을 수정하기 위해 열었을 때, <code>&lt;header&gt;</code>나 <code>&lt;nav&gt;</code>처럼 웹페이지 상의 위치와 기능을 알려주는 tag가 없기 때문에 <strong>직접 하나하나 각 코드가 의미하는 바를 확인</strong> 해봐야 하는 문제가 생긴다. <br>
  물론, class를 통해 같은 의미와 기능을 하는 tag 들을 표현할 수 있지만 매번 새로운 페이지를 작성할 때마다 반복되는 의미와 기능 표현하기 위해 class를 정의하며 불필요한 시간이 소모된다. 따라서, 다시 한 번 재차 구현할 필요없이 semantic tag를 사용해 가독성과 생산성을 둘 다 잡으면 된다. </p>
<h3 id="semantic-tag-로-표현하는-웹페이지-layout">Semantic tag 로 표현하는 웹페이지 Layout</h3>
<p>  <img src="https://images.velog.io/images/hyunseok-j/post/c1116f6a-2324-47d1-95e9-9ad2f1903d2d/%EC%8A%A4%ED%81%AC%EB%A6%B0%EC%83%B7%202021-07-28%20%EC%98%A4%ED%9B%84%206.25.07.png" alt="">
  <hr></p>
<h2 id="유용한-사이트-모음">유용한 사이트 모음</h2>
<ul>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element">MDN 의  html element reference</a> 
Tag 와 Attribute 정리된 곳으로 자신이 필요로 하는 기능을 만족하는 <strong>Tag</strong> 또는 <strong>Attribute</strong>가 있는지 확인하고 <strong>지원 가능 브라우저 종류</strong>와 <strong>버전</strong>을 확인할 수 있다.  </li>
</ul>
<ul>
<li><a href="http://validator.w3.org/#validate_by_input">Validator</a> 
정상적으로 입력되지 않은 html 문서인지 확인할 수 있다. </li>
</ul>
<h2 id="참고">참고</h2>
<ul>
<li>드림코딩 엘리 Youtube 중 HTML 관련 영상</li>
</ul>
<ol>
<li><a href="https://www.youtube.com/watch?v=i0FN-OwJ7QI">https://www.youtube.com/watch?v=i0FN-OwJ7QI</a></li>
<li><a href="https://www.youtube.com/watch?v=OoA70D2TE0A">https://www.youtube.com/watch?v=OoA70D2TE0A</a></li>
</ol>
]]></description>
        </item>
        <item>
            <title><![CDATA[함수]]></title>
            <link>https://velog.io/@hyunseok-j/Swift-%EA%B8%B0%EB%B3%B8%EB%AC%B8%EB%B2%95%EC%A0%95%EB%A6%AC4</link>
            <guid>https://velog.io/@hyunseok-j/Swift-%EA%B8%B0%EB%B3%B8%EB%AC%B8%EB%B2%95%EC%A0%95%EB%A6%AC4</guid>
            <pubDate>Tue, 06 Jul 2021 08:52:17 GMT</pubDate>
            <description><![CDATA[<h2 id="함수">함수</h2>
<h3 id="📌-함수-정의">📌 함수 정의</h3>
<p>아래의 형태로 함수를 정의한다.  </p>
<pre><code>⁉️ 반환값이 없을 때, 반환타입으로 `Void`를 넣거나 `-&gt; 반환타입` 부분을 생략</code></pre><blockquote>
</blockquote>
<pre><code class="language-swift">func 함수이름 (param1Name: param1Type, param2Name: param2Type) -&gt; 반환타입 {
    /* 구현부 */
    return 반환값
}</code></pre>
<h3 id="📌-함수-호출">📌 함수 호출</h3>
<blockquote>
</blockquote>
<pre><code class="language-swift"> /* 1. 매개변수 이름과 값을 넣어 호출 */
 callFunction(a: 10, b: 20)</code></pre>
<blockquote>
</blockquote>
<pre><code class="language-swift">/* 2. 전달인자 레이블과 값을 넣어 호출 */
// func callFunction(left a: Int, right b: Int) -&gt; Int {}
callFunction(left: 10, right: 20)  </code></pre>
<blockquote>
</blockquote>
<pre><code class="language-swift">/* 3. 전달인자 레이블이 &#39;_&#39;여서 값만 넣어 호출 */
// func callFunction(_ a: Int,_ b: Int) -&gt; Int {}
callFunction(10, 20)</code></pre>
<h3 id="📌-함수-타입-표현">📌 함수 타입 표현</h3>
<pre><code>함수도 하나의 객체로 변수나 상수에 하나의 타입으로 지정해서 저장 가능</code></pre><blockquote>
</blockquote>
<pre><code class="language-swift">func sum (a: Int, b: Int) -&gt; Int {
    return a+b
}
var varFunction: (Int, Int) -&gt; Int = sum(a:b:)</code></pre>
<h3 id="📌-매개변수-default-값-설정">📌 매개변수 Default 값 설정</h3>
<blockquote>
</blockquote>
<pre><code class="language-swift">func 함수이름(param1Name: param1Type = defaultValue) {}</code></pre>
<h3 id="📌-전달인자-레이블-argument-label">📌 전달인자 레이블 (Argument Label)</h3>
<p>매개변수의 별명으로, 매개변수의 의미를 더 명확히 해야할 경우에 사용</p>
<pre><code>⁉️ 전달인자 부분에 `_`를 사용하면, 함수 호출시에 매개변수이름없이 호출 가능</code></pre><blockquote>
</blockquote>
<pre><code class="language-swift">func 함수이름(전달인자 param1Name: param1Type) {}</code></pre>
<h3 id="📌-가변-매개-변수">📌 가변 매개 변수</h3>
<p>함수당 1개인 맨 마지막 매개변수 타입 뒤에 띄어쓰기 없이 &#39;...&#39;로 표현  </p>
<pre><code>⁉️ 함수 body에서 가변 매개 변수로 넘어온 인자는 `Array&lt;paramType&gt;` 타입으로 전달  </code></pre><blockquote>
</blockquote>
<pre><code class="language-swift">func getStringNames(friends: String...) -&gt; String {
    return &quot;\(friends)&quot;
}</code></pre>
<pre><code class="language-swift">getStringName() // 결과 : []</code></pre>
<p><br><br></p>
<p>🧷 참고한 강의 :  <a href="https://www.boostcourse.org/mo122/joinLectures/38564">&quot;iOS 프로그래밍을 위한 스위프트 기초&quot;</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[데이터 타입]]></title>
            <link>https://velog.io/@hyunseok-j/Swift-%EA%B8%B0%EB%B3%B8%EB%AC%B8%EB%B2%95%EC%A0%95%EB%A6%AC3</link>
            <guid>https://velog.io/@hyunseok-j/Swift-%EA%B8%B0%EB%B3%B8%EB%AC%B8%EB%B2%95%EC%A0%95%EB%A6%AC3</guid>
            <pubDate>Fri, 18 Jun 2021 11:11:37 GMT</pubDate>
            <description><![CDATA[<h2 id="기본형">기본형</h2>
<h3 id="📌-bool">📌 Bool</h3>
<p>참은 <code>true</code> 으로,  거짓은 <code>false</code>로 표현</p>
<h3 id="📌-정수-int-uint">📌 정수 Int, UInt</h3>
<p>실행 환경에 따라 값의 범위 변경</p>
<ul>
<li>64비트 환경이면 Int는 Int64로 설정되어 64비트(8bytes) 정수형 타입  </li>
</ul>
<p><strong>UInt</strong> 는 <strong>양수</strong>만 할당 가능</p>
<h3 id="📌-부동소수-float-double">📌 부동소수 Float, Double</h3>
<p><strong>Float</strong> 는 <code>32비트</code> 부동소수형이고, <strong>Double</strong> 은 <code>64비트</code> 부동소수형이다.</p>
<h3 id="📌-문자-관련-character-string">📌 문자 관련 Character, String</h3>
<p>둘 다 <strong>유니코드</strong> 를 사용하며, <strong>큰 따옴표(&quot; &quot;)</strong> 를 사용</p>
<br>

<hr>
<br>

<h2 id="any-anyobject-nil">Any, AnyObject, nil</h2>
<h3 id="📌-any">📌 Any</h3>
<p>함수 타입을 제외한 클래스 포함 <strong>Swift의 모든 타입</strong> 을 지칭하는 키워드</p>
<ul>
<li><p><code>is</code>로 어떤 타입을 가지고 있는지 확인 후, <code>as</code> 로 형변환하여 사용 가능</p>
<pre><code class="language-swift">class Human {
  var weight: Double
  var tall: Double

  init(_ weight: Double, _ tall: Double){
      self.weight = weight
      self.tall = tall
  }
</code></pre>
</li>
</ul>
<p>}</p>
<p>var any: Any = Human(13,12)</p>
<p>if any is Human {
    if let instance: Human = any as? Human {
        print(&quot;tall = (instance)&quot;)
    }
}</p>
<pre><code>### 📌 AnyObject
모든 클래스를 지칭하는 프로토콜
### 📌 nil
`null` 과 같이 `없음` 을 의미하는 키워드
* `Optional` 타입의 변수나 상수에만 할당이 가능

&lt;br&gt;

***

&lt;br&gt;

## 컬렉션
### 📌 Array
순서(인덱스)가 있는 리스트 컬렉션
#### 1. Array 생성
`[Int]`가 `Array&lt;Int&gt;`와 동일하게 사용
```swift
var integers: Array&lt;Int&gt; = Array&lt;Int&gt;()
// var integers: [Int] = Array&lt;Int&gt;()
// var integers: Array&lt;Int&gt; = [Int]()
// var integers: [Int] = [Int]()
// var integers: [Int] = []</code></pre><h4 id="2-값-추가">2. 값 추가</h4>
<pre><code class="language-swift">integers.append(10)</code></pre>
<h4 id="3-값-제거">3. 값 제거</h4>
<pre><code class="language-swift">integers.remove(at: 0)
integers.removeLast()
integers.removeAll()</code></pre>
<h4 id="4-인덱스-i-의-값-조회">4. 인덱스 i 의 값 조회</h4>
<pre><code class="language-swift">integers[i]</code></pre>
<h4 id="5-array-길이">5. Array 길이</h4>
<pre><code class="language-swift">integers.count</code></pre>
<hr>
<h3 id="📌-dictionary">📌 Dictionary</h3>
<p>key와 value로 구성된 컬렉션</p>
<h4 id="1-dictionary-생성">1. Dictionary 생성</h4>
<p><code>[String: Any]</code>가 <code>Dictionary&lt;String, Any&gt;</code>와 동일하게 사용</p>
<pre><code class="language-swift">var anyDict: Dictionary&lt;String, Any&gt; = Dictionary&lt;String, Any&gt;()
// var anyDict: [String: Any] = [String: Any]()</code></pre>
<h4 id="2-값-추가-1">2. 값 추가</h4>
<pre><code class="language-swift">anyDict[&quot;someKey&quot;] = &quot;value&quot;</code></pre>
<h4 id="3-값-제거-1">3. 값 제거</h4>
<pre><code class="language-swift">anyDict.removeKey(forKey: &quot;someKey&quot;)
anyDict[&quot;someKey&quot;] = nil</code></pre>
<hr>
<h3 id="📌-set">📌 Set</h3>
<p>순서가 없고 중복된 값이 없는 컬렉션</p>
<h4 id="1-set-생성">1. Set 생성</h4>
<pre><code class="language-swift">var integerSet: Set&lt;Int&gt; = Set&lt;Int&gt;()</code></pre>
<h4 id="2-값-추가-2">2. 값 추가</h4>
<pre><code class="language-swift">integerSet.insert(10)</code></pre>
<h4 id="3-값-제거-2">3. 값 제거</h4>
<pre><code class="language-swift">integerSet.remove(value)
integerSet.removeFirst()</code></pre>
<h4 id="4-set-길이">4. Set 길이</h4>
<pre><code class="language-swift">integerSet.count</code></pre>
<h4 id="5-집합-관련-함수">5. 집합 관련 함수</h4>
<ul>
<li><p>합집합 <code>setA.union(setB)</code>  </p>
</li>
<li><p>교집합 <code>setA.intersection(setB)</code></p>
</li>
<li><p>차집합 <code>setA.substracting(setB)</code></p>
</li>
</ul>
<br>

<hr>
<br>



<p>🧷 참고한 강의 :  <a href="https://www.boostcourse.org/mo122/joinLectures/38564">&quot;iOS 프로그래밍을 위한 스위프트 기초&quot;</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[변수와 상수]]></title>
            <link>https://velog.io/@hyunseok-j/Swift-%EA%B8%B0%EB%B3%B8%EB%AC%B8%EB%B2%95%EC%A0%95%EB%A6%AC2</link>
            <guid>https://velog.io/@hyunseok-j/Swift-%EA%B8%B0%EB%B3%B8%EB%AC%B8%EB%B2%95%EC%A0%95%EB%A6%AC2</guid>
            <pubDate>Wed, 16 Jun 2021 12:14:58 GMT</pubDate>
            <description><![CDATA[<h2 id="변수">변수</h2>
<p>데이터를 저장한 후에도 값 변경이 가능한 메모리 공간을 의미</p>
<h3 id="📌-var">📌 var</h3>
<pre><code>선언할 때, 선언하는 것이 변수임을 지칭하는 키워드</code></pre><h3 id="📌-변수-선언">📌 변수 선언</h3>
<pre><code class="language-swift">var 변수이름: 변수타입 = 저장할 값</code></pre>
<p><br><br></p>
<h2 id="상수">상수</h2>
<p>데이터를 한 번 저장한 후, 불변인 메모리 공간</p>
<h3 id="📌-let">📌 let</h3>
<pre><code>선언할 때, 선언하는 것이 상수임을 지칭하는 키워드</code></pre><h3 id="📌-상수-선언">📌 상수 선언</h3>
<pre><code class="language-swift">let 상수이름: 상수타입 = 저장할 값</code></pre>
<p>✔️ let 선언 시에 <code>let 이름: 타입</code> 까지만 적어두고 나중에 할당도 가능</p>
<p><br><br></p>
<p>🧷 참고한 강의 :  <a href="https://www.boostcourse.org/mo122/joinLectures/38564">&quot;iOS 프로그래밍을 위한 스위프트 기초&quot;</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[명명법 / 문자열 보간법]]></title>
            <link>https://velog.io/@hyunseok-j/Swift-%EA%B8%B0%EB%B3%B8%EB%AC%B8%EB%B2%95%EC%A0%95%EB%A6%AC1</link>
            <guid>https://velog.io/@hyunseok-j/Swift-%EA%B8%B0%EB%B3%B8%EB%AC%B8%EB%B2%95%EC%A0%95%EB%A6%AC1</guid>
            <pubDate>Wed, 16 Jun 2021 11:45:52 GMT</pubDate>
            <description><![CDATA[<h2 id="명명법">명명법</h2>
<p>기본적으로 대소문자가 구분된 Camel 형태로 작성</p>
<p>✔️ Camel</p>
<blockquote>
<p>변수나 함수명 등을 표현할 때 <strong>단어마다 첫문자는 대문자</strong>로 표현하되,
<strong>첫번째  단어의 첫문자는 소문자</strong>로 시작하게 표기하는 방식 </p>
</blockquote>
<pre><code>[ex] somePeople, getStudentNames()    </code></pre><p><br><br></p>
<h2 id="콘솔-출력">콘솔 출력</h2>
<h3 id="📌-print">📌 print</h3>
<pre><code>단순 문자열 출력</code></pre><h3 id="📌-dump">📌 dump</h3>
<pre><code>인스턴스의 구체적인 사항까지 출력해서 확인하기 위해 사용</code></pre><p><br><br></p>
<h2 id="문자열-보간법">문자열 보간법</h2>
<p>기본 문자열과 변수 or 상수와 같은 값을 같이 출력하기 위해 사용</p>
<pre><code class="language-swift">var age: Int = 22

print(&quot;안녕하세요 저의 나이는 \(age + 5)입니다.&quot;)</code></pre>
<p><br><br></p>
<p>🧷 참고한 강의 :  <a href="https://www.boostcourse.org/mo122/joinLectures/38564">&quot;iOS 프로그래밍을 위한 스위프트 기초&quot;</a></p>
]]></description>
        </item>
    </channel>
</rss>