<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>key-design-dev.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Tue, 01 Mar 2022 11:16:19 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>key-design-dev.log</title>
            <url>https://images.velog.io/images/key-design-dev/profile/20044d9a-a707-4587-a022-60d25aac3894/velog_profile.jpg</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. key-design-dev.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/key-design-dev" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[[스파르타 코딩클럽] 웹개발 종합반_2주차]]></title>
            <link>https://velog.io/@key-design-dev/%EC%8A%A4%ED%8C%8C%EB%A5%B4%ED%83%80-%EC%BD%94%EB%94%A9%ED%81%B4%EB%9F%BD-%EC%9B%B9%EA%B0%9C%EB%B0%9C-%EC%A2%85%ED%95%A9%EB%B0%982%EC%A3%BC%EC%B0%A8</link>
            <guid>https://velog.io/@key-design-dev/%EC%8A%A4%ED%8C%8C%EB%A5%B4%ED%83%80-%EC%BD%94%EB%94%A9%ED%81%B4%EB%9F%BD-%EC%9B%B9%EA%B0%9C%EB%B0%9C-%EC%A2%85%ED%95%A9%EB%B0%982%EC%A3%BC%EC%B0%A8</guid>
            <pubDate>Tue, 01 Mar 2022 11:16:19 GMT</pubDate>
            <description><![CDATA[<p>3주차가 되어서야 2주차 수업을 완주했다. 말로만 듣던 API 사용법을 배워 신이 났던 한 주였다. 확실히 Javascript 는 약간 장벽 같다. 하지만 모든 웹 프로그래밍 언어의 기본이라고 하니 익숙해져야겠지. 😢 Javascript 가 아무리 어려워도 현재 나의 퇴사하고 싶은 마음보다 강적이 되지는 못할 것이다. 👻</p>
<p><img src="https://images.velog.io/images/key-design-dev/post/465711e3-04fd-4bf9-87ca-e6e3a81aecae/image.png" alt=""></p>
<hr>
<h1 id="1-javascript-복습">1. Javascript 복습</h1>
<ul>
<li>클릭할 때마다 클릭한 누적 횟수에 따라 홀수 / 짝수로 나눠 알림 창을 띄우는 <code>onclick</code> 함수 만들기</li>
</ul>
<pre><code class="language-javascript">let count = 1;

function hey() {
    if (count % 2 == 0) {
        alert(&#39;짝수입니다!&#39;);
    } else {
        alert(&#39;홀수입니다!&#39;);
    }
    count += 1;
}</code></pre>
<ul>
<li><code>count += 1</code> 는 <code>count = count + 1</code> 와 같다</li>
</ul>
<ul>
<li>변수가 함수 안에서 선언 되면 함수가 실행 되면서 변수가 계속 새롭게 선언 되기 때문에, 변수에 계속 1 씩 추가 되거나 하는 조건을 만족할 수 없다</li>
<li>함수 바깥에서 선언 된 변수를 <code>전역 변수</code> 라고 한다</li>
<li>함수와 상관 없이 스크립트 어디서든 사용 가능하다</li>
<li>함수 안에서 선언한 변수는 함수 안에서만 사용 가능하며 함수 실행이 종료 되면 사라진다</li>
</ul>
<h1 id="2-jquery">2. JQuery</h1>
<ul>
<li>다양한 브라우저를 사용하던 시절, 브라우저 간 호환성 문제로 인해 길고 복잡해지는 <code>Javascript</code> 코드들을 모아 라이브러리로 만든 것</li>
<li>반드시 HTML 상단에 <code>import</code> 해야 JQuery 코드를 사용할 수 있다</li>
<li>상대적으로 Javascript 코드는 길고 복잡한 반면 JQuery 코드는 직관적이다</li>
</ul>
<ul>
<li>Javascript 로 div 숨기기</li>
</ul>
<pre><code class="language-javascript">document.getElementById(&quot;element&quot;).style.display = &quot;none&quot;;</code></pre>
<ul>
<li>JQuery 로 div 숨기기</li>
</ul>
<pre><code class="language-javascript">$(&#39;#element&#39;).hide();</code></pre>
<ul>
<li><p>우리가 사용한 Bootstrap 템플릿에는 이미 import 되어 있다</p>
</li>
<li><p>input box 의 값을 가져오기</p>
</li>
</ul>
<pre><code class="language-javascript">1. input box 의 id 를 article-url 로 지정한다
2. input box 에 &#39;세종대왕&#39;을 입력한다
3. Console 탭에 $(&#39;#article-url&#39;).val(); 을 입력한다</code></pre>
<ul>
<li>input box 에 Jquery 로 값을 입력하기</li>
</ul>
<pre><code class="language-javascript">1. input box 의 id 를 article-url 로 지정한다
2. Console 탭에 $(&#39;#article-url&#39;).val(&#39;장영실&#39;); 을 입력한다</code></pre>
<ul>
<li>#post-box 를 숨기기</li>
</ul>
<pre><code class="language-javascript">$(&#39;#post-box&#39;).hide()</code></pre>
<ul>
<li>#post-box 를 보이게 하기</li>
</ul>
<pre><code class="language-javascript">$(&#39;#post-box&#39;).show()</code></pre>
<ul>
<li>요소의 상태에 따라 달라지는 CSS 값을 가져올 수 있다</li>
</ul>
<ol>
<li>#post-box 의 CSS 값을 가져오기</li>
</ol>
<pre><code class="language-javascript">$(&#39;#post-box&#39;).css(&#39;width&#39;)
&#39;500px&#39;</code></pre>
<ol start="2">
<li>#post-box 의 CSS 값을 변경하기</li>
</ol>
<pre><code class="language-javascript">$(&#39;#post-box&#39;).css(&#39;width&#39;,&#39;700px&#39;)</code></pre>
<ol start="3">
<li>#post-box 의 CSS 값을 가져오기</li>
</ol>
<pre><code class="language-javascript">$(&#39;#post-box&#39;).css(&#39;display&#39;)
&#39;block&#39;</code></pre>
<ol start="4">
<li>#post-box 를 숨기기</li>
</ol>
<pre><code class="language-javascript">$(&#39;#post-box&#39;).hide()</code></pre>
<ol start="5">
<li>#post-box 의 CSS 값을 가져오기</li>
</ol>
<pre><code class="language-javascript">$(&#39;#post-box&#39;).css(&#39;display&#39;)
&#39;none&#39;</code></pre>
<ul>
<li>#btn-posting-box 의 text 를 변경하기</li>
</ul>
<pre><code class="language-javascript">$(&#39;#btn-posting-box&#39;).text(&#39;포스팅박스 닫기&#39;)

$(&#39;#btn-posting-box&#39;).text(&#39;포스팅박스 열기&#39;)</code></pre>
<ul>
<li><code>백틱</code> 을 사용하여 문자열로 HTML 코드를 입력하면 HTML 코드를 추가할 수 있다</li>
</ul>
<pre><code class="language-javascript">let temp_html = `&lt;button&gt;나는 버튼이다&lt;/button&gt;`

$(&#39;#cards-box&#39;).append(temp_html)</code></pre>
<ul>
<li>변수를 HTML 코드 안에 값으로 넣고 싶을 때는 <code>${변수}</code> 형태로 HTML 코드 안에 입력한다</li>
</ul>
<pre><code class="language-javascript">let title = &#39;아무거나 제목!!!&#39;

let temp_html = `&lt;a href=&quot;https://www.naver.com/&quot; class=&quot;card-title&quot;&gt;${title}&lt;/a&gt;`</code></pre>
<ul>
<li><p>코드를 작성할 때는 <code>alert</code> 이나 <code>console.log</code> 함수로 코드가 잘 실행 되는지 확인하면서 진행하면 좋다</p>
</li>
<li><p>버튼을 누르면 form 이 나타났다가 사라지는 toggle 버튼 만들기</p>
</li>
</ul>
<pre><code class="language-javascript">function openclose() {
    let status = $(&#39;#post-box&#39;).css(&#39;display&#39;);
    if (status == &#39;block&#39;) {
        $(&#39;#post-box&#39;).hide();
        $(&#39;#btn-posting-box&#39;).text(&#39;포스팅박스 열기&#39;);
    } else {
        $(&#39;#post-box&#39;).show();
        $(&#39;#btn-posting-box&#39;).text(&#39;포스팅박스 닫기&#39;);
    }
}</code></pre>
<ul>
<li>Javascript 와 JQuery 를 연계해서 사용하는 것이 중요하다</li>
</ul>
<h1 id="quiz">QUIZ</h1>
<ul>
<li>Console 탭에서 연습하면서 잘 실행 되는지 확인하는 습관을 들이자</li>
</ul>
<p>✔️ 코드를 정확하게 작성해놓고 <code>괄호 }</code> 를 안 닫아서 계속 헤맸다 😢</p>
<pre><code class="language-javascript">function q2() {
    let txt = $(&#39;#input-q2&#39;).val();

    if (txt.includes(&#39;@&#39;)) {
        let domain = txt.split(&#39;@&#39;)[1].split(&#39;.&#39;)[0]
    alert(domain)
    } else {
        alert(&#39;이메일이 아닙니다&#39;)
    }
}</code></pre>
<p>✔️ 나와 다르게 깔끔하고 간결한 강사님의 코드
✔️ 괄호 쓰는 법도 익숙하지 않아 어렵고 문장 끝에 <code>기호 ;</code> 를 붙여야 하는지 안 붙여도 되는지가 많이 헷갈린다</p>
<h1 id="3-ajax">3. Ajax</h1>
<ul>
<li>Javascript 로 페이지 전환 (새로고침) 없이 서버에서 값을 받아올 수 있는 방법</li>
</ul>
<ul>
<li><code>API</code> 는 서버에서 클라이언트가 데이터를 요청할 수 있도록 열어둔 창구</li>
<li><code>JSON</code> 은 서버가 클라이언트에게 데이터를 주는 포맷</li>
<li><code>JSON</code> 형식은 어려워 보이지만 List 에 Dictionary 가 많이 들어 있는 것 뿐이다</li>
</ul>
<ul>
<li>클라이언트가 서버에게 데이터를 요청할 때도 타입에 따라 동작하는 기능이 다르다</li>
<li><code>GET</code> 은 보통 데이터 조회 (Read) 를 요청할 때 사용</li>
<li><code>POST</code> 는 보통 데이터 생성 (Create) / 변경 (Update) / 삭제 (Delete) 를 요청할 때 사용</li>
<li>데이터 요청할 때 목적에 따라 반드시 해당 타입으로 요청해야 하는 것은 아니고 통상적으로 각각의 타입을 많이 쓰는 편이다</li>
</ul>
<ul>
<li>브라우저에 URL 을 입력해서 Enter 를 치는 행위 자체가 <code>GET</code> 요청이다</li>
</ul>
<pre><code class="language-javascript">naver.com/aaa?code=00000
서버의 주소/파일/받는 데이터</code></pre>
<ul>
<li><code>code=</code> 뒤의 숫자를 바꾸면 코드값 오류라고 뜬다</li>
</ul>
<ul>
<li>데이터의 형식을 클라이언트와 서버가 미리 약속하고 해당 형식으로 보내고 받는 것</li>
<li>두 개의 형식이 어긋나면 데이터를 제대로 받을 수 없다</li>
</ul>
<pre><code class="language-javascript">naver.com/aaa?code=00000&amp;name=sparta</code></pre>
<ul>
<li>URL 안에서 값을 추가할 때는 <code>기호 &amp;</code> 을 사용한다</li>
<li><code>name=sparta</code> 를 추가해도 코드값 오류라고 뜨지 않는다</li>
<li>약속하지 않은 요청 데이터가 서버에게 추가로 전달 되었을 뿐이다</li>
</ul>
<ul>
<li><code>?</code> 는 전달할 데이터 작성을 시작할 때 사용</li>
<li><code>&amp;</code> 는 전달할 데이터가 더 있을 때 <code>AND</code> 의 의미로 사용</li>
</ul>
<ul>
<li>Ajax 는 JQuery 를 import 한 페이지에서만 작동 가능하다</li>
</ul>
<ul>
<li>Ajax 의 기본 골격</li>
</ul>
<pre><code class="language-javascript">$.ajax({
  type: &quot;GET&quot;,
  url: &quot;여기에 URL을 입력&quot;,
  data: {},
  success: function(response){
    console.log(response)
  }
})</code></pre>
<ul>
<li><code>url</code> 에 API 주소를 입력하면 API 데이터가 <code>response</code> 로 들어온다</li>
<li>따라서 예시 코드처럼 입력하면 Console 탭에 API 데이터가 출력 된다</li>
</ul>
<pre><code class="language-javascript">$.ajax({
  type: &quot;GET&quot;,
  url: &quot;http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99&quot;,
  data: {},
  success: function(response){
    console.log(response[&#39;RealtimeCityAir&#39;][&#39;row&#39;][0])
  }
})</code></pre>
<ul>
<li>필요한 데이터만 추출하여 가져올 수 있다</li>
<li>타입은 <code>GET</code> 이고 data 는 현재 가져오는 것이 없는 상태이다</li>
<li><code>data</code> 는 POST 요청을 할 때 사용하는 것</li>
<li><code>response</code> 는 변수라 다른 단어로 대체 가능하지만 통상적으로 response 를 사용한다</li>
</ul>
<ul>
<li><code>for</code> 문을 사용하여 미세먼지 수치가 70 미만인 지역의 데이터만 가져오기</li>
</ul>
<pre><code class="language-javascript">$.ajax({
  type: &quot;GET&quot;,
  url: &quot;http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99&quot;,
  data: {},
  success: function(response){
    let rows = response[&#39;RealtimeCityAir&#39;][&#39;row&#39;]
      for (let i = 0; i &lt; rows.length; i++) {
          let gu_name = rows[i][&#39;MSRSTE_NM&#39;]
          let gu_mise = rows[i][&#39;IDEX_MVL&#39;]
          if (gu_mise &lt; 70) {
              console.log(gu_name, gu_mise)
          }
      }    
  }
})</code></pre>
<h1 id="quiz-1">QUIZ</h1>
<ul>
<li>서울시 Open API 실시간 미세먼지 상태 데이터를 불러와서 업데이트 버튼을 누를 때마다 새로고침 되게 하기</li>
</ul>
<pre><code class="language-javascript">function q1() {
    $(&#39;#names-q1&#39;).empty()
    $.ajax({
      type: &quot;GET&quot;,
      url: &quot;http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99&quot;,
      data: {},
      success: function(response){
        let rows = response[&#39;RealtimeCityAir&#39;][&#39;row&#39;]
          for (let i = 0; i &lt; rows.length; i++) {
              let gu_name = rows[i][&#39;MSRSTE_NM&#39;]
              let gu_mise = rows[i][&#39;IDEX_MVL&#39;]

              let temp_html = `&lt;li&gt;${gu_name} : ${gu_mise}&lt;/li&gt;`
              $(&#39;#names-q1&#39;).append(temp_html)
          }
      }
    })
}</code></pre>
<ul>
<li>위의 상태에서 미세먼지 수치가 70 이상인 곳은 텍스트를 <code>red</code> 로 표시하기</li>
</ul>
<pre><code class="language-javascript">function q1() {
    $(&#39;#names-q1&#39;).empty()
    $.ajax({
      type: &quot;GET&quot;,
      url: &quot;http://openapi.seoul.go.kr:8088/6d4d776b466c656533356a4b4b5872/json/RealtimeCityAir/1/99&quot;,
      data: {},
      success: function(response){
        let rows = response[&#39;RealtimeCityAir&#39;][&#39;row&#39;]
          for (let i = 0; i &lt; rows.length; i++) {
              let gu_name = rows[i][&#39;MSRSTE_NM&#39;]
              let gu_mise = rows[i][&#39;IDEX_MVL&#39;]

              let temp_html = ``
              if (gu_mise &gt; 70) {
                  temp_html = `&lt;li class=&quot;bad&quot;&gt;${gu_name} : ${gu_mise}&lt;/li&gt;`
              } else {
                  temp_html = `&lt;li&gt;${gu_name} : ${gu_mise}&lt;/li&gt;`
              }
              $(&#39;#names-q1&#39;).append(temp_html)
          }
      }
    })
}</code></pre>
<ul>
<li>서울시 실시간 따릉이 현황을 업데이트 버튼 누를 때마다 새로 불러오기</li>
</ul>
<pre><code class="language-javascript">function q1() {
    $(&#39;#names-q1&#39;).empty()
    $.ajax({
      type: &quot;GET&quot;,
      url: &quot;http://spartacodingclub.shop/sparta_api/seoulbike&quot;,
      data: {},
      success: function(response){
        let rows = response[&#39;getStationList&#39;][&#39;row&#39;]
          for (let i = 0; i &lt; rows.length; i++) {
              let station_location = rows[i][&#39;stationName&#39;]
              let station_number = rows[i][&#39;rackTotCnt&#39;]
              let bike_number = rows[i][&#39;parkingBikeTotCnt&#39;]

              let temp_html = `&lt;tr&gt;
                                    &lt;td&gt;${station_location}&lt;/td&gt;
                                    &lt;td&gt;${station_number}&lt;/td&gt;
                                    &lt;td&gt;${bike_number}&lt;/td&gt;
                                &lt;/tr&gt;`
              $(&#39;#names-q1&#39;).append(temp_html)
          }
      }
    })
}</code></pre>
<ul>
<li>위의 상태에서 따릉이가 5개 미만인 곳은 텍스트를 <code>red</code> 로 표시하기</li>
</ul>
<pre><code class="language-javascript">function q1() {
    $(&#39;#names-q1&#39;).empty()
    $.ajax({
      type: &quot;GET&quot;,
      url: &quot;http://spartacodingclub.shop/sparta_api/seoulbike&quot;,
      data: {},
      success: function(response){
        let rows = response[&#39;getStationList&#39;][&#39;row&#39;]
          for (let i = 0; i &lt; rows.length; i++) {
              let station_location = rows[i][&#39;stationName&#39;]
              let station_number = rows[i][&#39;rackTotCnt&#39;]
              let bike_number = rows[i][&#39;parkingBikeTotCnt&#39;]

              let temp_html = ``
              if (bike_number &gt; 5) {
                  temp_html = `&lt;tr&gt;
                                    &lt;td&gt;${station_location}&lt;/td&gt;
                                    &lt;td&gt;${station_number}&lt;/td&gt;
                                    &lt;td&gt;${bike_number}&lt;/td&gt;
                                &lt;/tr&gt;`
                  $(&#39;#names-q1&#39;).append(temp_html)
              } else {
                  temp_html = `&lt;tr&gt;
                                    &lt;td class=&quot;red-td&quot;&gt;${station_location}&lt;/td&gt;
                                    &lt;td class=&quot;red-td&quot;&gt;${station_number}&lt;/td&gt;
                                    &lt;td class=&quot;red-td&quot;&gt;${bike_number}&lt;/td&gt;
                                &lt;/tr&gt;`
                  $(&#39;#names-q1&#39;).append(temp_html)
              }
          }
      }
    })
}</code></pre>
<ul>
<li>랜덤 고양이 API 를 이용하여 버튼을 누를 때마다 새로운 고양이 사진을 불러오기</li>
</ul>
<pre><code class="language-javascript">function q1() {
      $.ajax({
        type: &quot;GET&quot;,
        url: &quot;https://api.thecatapi.com/v1/images/search&quot;,
        data: {},
        success: function(response){
          let url = response[0][&#39;url&#39;]
          $(&quot;#img-cat&quot;).attr(&quot;src&quot;, url)
        }
      })
}</code></pre>
<ul>
<li>이미지 태그의 주소를 바꾸는 JQuery 코드</li>
</ul>
<pre><code class="language-javascript">$(“#id”).attr(“src”, url)</code></pre>
<hr>
<p>이제 제법 예제 코드의 길이가 길어졌다. 퇴근하고 필라테스 수업도 듣고 웹 개발 수업도 들으니 하루하루가 정말 빠르게 지나간다. 해야 할 일은 많은데 24시간은 너무 짧다. 하지만 개발자로서의 새로운 인생을 시작하기 위해서 더 열심히 해야지! 💪</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[스파르타 코딩클럽] 웹개발 종합반_1주차]]></title>
            <link>https://velog.io/@key-design-dev/%EC%8A%A4%ED%8C%8C%EB%A5%B4%ED%83%80-%EC%BD%94%EB%94%A9%ED%81%B4%EB%9F%BD-%EC%9B%B9%EA%B0%9C%EB%B0%9C-%EC%A2%85%ED%95%A9%EB%B0%981%EC%A3%BC%EC%B0%A8</link>
            <guid>https://velog.io/@key-design-dev/%EC%8A%A4%ED%8C%8C%EB%A5%B4%ED%83%80-%EC%BD%94%EB%94%A9%ED%81%B4%EB%9F%BD-%EC%9B%B9%EA%B0%9C%EB%B0%9C-%EC%A2%85%ED%95%A9%EB%B0%981%EC%A3%BC%EC%B0%A8</guid>
            <pubDate>Tue, 15 Feb 2022 16:52:52 GMT</pubDate>
            <description><![CDATA[<p>스파르타 코딩클럽 웹 개발 종합반이 2월 7일 개강했다. 맛보기가 아닌 완주를 목표로 수강하기 시작한 첫 번째 강의이다. 디자이너로 커리어를 시작하여 정신 차려보니 3년 째 워드프레스로 웹사이트를 만들고 있었고, CSS 와 잡다한 지식은 많이 늘었지만 사수 없이 일하다보니 프로젝트를 계속 해도 전혀 성장하지 못하는 기분이었다. 프론트엔드 개발자로 커리어 전환을 결심하고 여러가지 계획을 세우고 첫 강의를 수강하기 시작하니 즐거워졌다. 매일 퇴근 후 지쳐서 유투브만 보던 때보다 훨씬 생산적인 일상을 보내고 있다.</p>
<hr>
<h1 id="1-웹의-동작-개념">1. 웹의 동작 개념</h1>
<ul>
<li>서버와 클라이언트 / 브라우저의 역할</li>
<li>HTML / CSS / Javascript 의 역할</li>
<li>서버는 클라이언트에게 데이터를 보낸다</li>
</ul>
<h1 id="2-html--css">2. HTML / CSS</h1>
<ul>
<li><code>PyCharm</code> 은 Python 을 사용하기 편한 프로그램</li>
<li>h1 은 문서의 제목이니 꼭 필요하다</li>
<li>HTML 요소들은 글 속성과 박스 속성으로 나뉘기 때문에 글 속성 요소를 박스처럼 꾸미고 싶다면 <code>display: block</code> 을 적용해야 한다</li>
<li>구글 웹 폰트를 링크 연결하여 사용하는 방법</li>
<li>CSS 를 외부 파일로 작성해 링크 연결하는 방법</li>
</ul>
<p><code>background-size: cover / contain</code></p>
<p>✔️ 항상 헷갈리던 CSS 개념이었는데 이번 기회에 정리할 수 있었다.</p>
<blockquote>
<p><code>cmd + option + L</code> : 코드 정렬 in PyCharm<br><code>cmd + /</code> : 코드 선택하고 누르면 주석으로 변경</p>
</blockquote>
<p>✔️ VS Code 만 사용해보았는데 PyCharm 을 사용해보니 또 새롭고 단축키는 공통으로 사용 되는 것도 있고 아닌 것도 있는 듯 하다.</p>
<h1 id="3-bootstrap">3. Bootstrap</h1>
<ul>
<li>Bootstrap 템플릿으로 시작하기</li>
<li><a href="https://getbootstrap.com/">getbootstrap</a></li>
<li>다른 사람이 만든 CSS 시스템과 HTML 예시를 링크로 가져와서 사용하는 것</li>
<li>홈페이지의 Documentation 탭에서 원하는 요소를 선택하여 복사하여 사용한다</li>
<li>기존 class 를 지우지 않고 새로운 class 를 추가하여 여러 개의 class 를 중첩하여 적용 시키는 것이 좋다</li>
<li>코드가 길어져 보기 불편하다면 <code>div</code> 를 접어서 간단하게 만들어두자</li>
</ul>
<p>✔️ 버전이 계속 업데이트 되니 확인해야 한다</p>
<h1 id="quiz">Quiz</h1>
<ul>
<li>CSS 검색 추천 사이트</li>
<li><a href="https://www.w3schools.com/">w3schools</a></li>
<li><a href="https://developer.mozilla.org/ko/">MDN Web Docs</a></li>
</ul>
<h1 id="4-javascript">4. Javascript</h1>
<ul>
<li>브라우저가 알아들을 수 있는 프로그래밍 언어</li>
<li>최초로 브라우저와 서버를 개발할 때 Javascript 를 표준으로 설계하였기 때문이다</li>
<li>Java 와 Javascript 는 전혀 다른 언어이다</li>
<li>개발자 도구의 <code>Console</code> 탭은 HTML 파일의 script 코드와 이어지므로 파일 내에서 선언한 함수를 불러와서 사용할 수 있다</li>
</ul>
<h1 id="4-1-변수">4-1. 변수</h1>
<ul>
<li><code>변수</code>는 값을 담는 박스</li>
<li>숫자 뿐만 아니라 문자열도 담을 수 있다</li>
<li>문자열을 담을 때에는 큰 따옴표 <code>“”</code> / 작은 따옴표 <code>‘’</code> 안에 문자열을 넣어야 한다</li>
<li>문자열을 더하면 문자열이 순서 대로 배치 된다</li>
</ul>
<pre><code class="language-javascript">let first_name = &#39;eunyoung&#39;
let last_name = &#39;kim&#39;

first_name+last_name

‘eunyoungkim&#39;</code></pre>
<p>✔️ 문자열과 숫자를 더하면 문자열 뒤에 숫자가 나온다</p>
<h1 id="4-2-자료형---list">4-2. 자료형 - List</h1>
<ul>
<li><code>List 자료형</code>은 순서가 중요한 담기</li>
<li>괄호 <code>[]</code> 안에 쉼표 <code>,</code>로 구분하여 작성한다</li>
<li>프로그래밍 언어는 항상 0 부터 순서를 시작한다</li>
</ul>
<pre><code class="language-javascript">let a_list = [&#39;수박&#39;,&#39;참외&#39;,&#39;배&#39;]

a_list[0]
&#39;수박&#39;

a_list[1]
&#39;참외&#39;

a_list[2]
&#39;배&#39;</code></pre>
<ul>
<li>List 에 새로운 것을 추가할 수 있다</li>
</ul>
<pre><code class="language-javascript">a_list.push(&#39;감&#39;)</code></pre>
<h1 id="4-3-자료형---dictionary">4-3. 자료형 - Dictionary</h1>
<ul>
<li><code>Dictionary 자료형</code>은 해당 key 값에 대응 되는 value 값을 담는 것이다</li>
<li>List 자료형과 다르게 순서가 중요하지 않다</li>
<li>선언할 때는 괄호 <code>{}</code>와 기호 <code>:</code>를 사용하고 값을 불러올 때는 괄호 <code>[]</code>를 사용한다</li>
</ul>
<pre><code class="language-javascript">let a_dict = {&#39;name&#39;:&#39;bob&#39;,&#39;age&#39;:27}

a_dict[&#39;name&#39;]
&#39;bob&#39;

a_dict[&#39;age&#39;]
27</code></pre>
<ul>
<li>Dictionary 에도 새로운 것을 추가할 수 있다</li>
</ul>
<pre><code class="language-javascript">a_dict[&#39;height&#39;] = 180

a_dict
{name: &#39;bob&#39;, age: 27, height: 180}</code></pre>
<p>✔️ 확실히 이 부분부터 잘 이해가 안 되기 시작했다
✔️ 처음 선언할 때는 {} 괄호를 사용하는데 왜 추가할 때는 [] 괄호를 사용할까?
✔️ 그래도 이 부분은 이 글을 작성하며 다시 읽어보니 이해가 되는 듯 하다</p>
<ul>
<li>Dictionary 에 List 를 추가할 수 있다</li>
<li>Dictionary 와 List 는 서로의 요소로 사용 될 수 있다</li>
</ul>
<pre><code class="language-javascript">a_dict[&#39;fruits&#39;] = a_list
(4) [&#39;수박&#39;, &#39;참외&#39;, &#39;배&#39;, &#39;감&#39;]

a_dict
{name: &#39;bob&#39;, age: 27, height: 190, job: &#39;female&#39;, fruits: Array(4)}

a_dict[&#39;fruits&#39;][2]
&#39;배&#39;</code></pre>
<h1 id="4-4-함수">4-4. 함수</h1>
<ul>
<li><code>%</code>는 나눗셈의 나머지를 구하는 함수</li>
<li>트래픽을 균등하게 나눌 때나 짝수와 홀수를 구분할 때 사용한다</li>
</ul>
<pre><code class="language-javascript">let a = 100

a % 8
4</code></pre>
<ul>
<li>등호도 여러가지가 존재한다</li>
<li>변수를 선언할 때 = 기호를 사용하기 때문에 <code>서로의 값이 같다</code>는 것을 표현할 때는 <code>==</code> 기호를 사용한다</li>
<li>변수의 <code>값이 서로 같지 않다</code>는 것을 표현할 때는 <code>!=</code> 기호를 사용한다</li>
</ul>
<pre><code class="language-javascript">let a = 100

a &lt; 150
true

a &gt; 200
false

a == 100
true

a != 100
false</code></pre>
<ul>
<li><code>split</code> 은 어떤 문자열을 기준으로 문자열을 나누는 함수이다</li>
<li>예시와 같이 사용하면 어떤 도메인의 이메일인지 판별할 수 있다</li>
</ul>
<pre><code class="language-javascript">let myemail = &#39;sparta@gmail.com&#39;

myemail.split(&#39;@&#39;)
(2) [&#39;sparta&#39;, &#39;gmail.com&#39;]

myemail.split(&#39;@&#39;)[1]
&#39;gmail.com&#39;

myemail.split(&#39;@&#39;)[1].split(&#39;.&#39;)
(2) [&#39;gmail&#39;, &#39;com&#39;]

myemail.split(&#39;@&#39;)[1].split(&#39;.&#39;)[0]
&#39;gmail&#39;</code></pre>
<ul>
<li>꼭 위와 같은 풀이 과정을 거쳐서 최종 코드를 작성하는 습관을 기르자</li>
<li>한 번에 최종 코드를 만들겠다는 욕심을 버리자</li>
</ul>
<ul>
<li>프로그래밍 언어에서 <code>함수</code>는 정해진 동작을 수행하는 것이다</li>
</ul>
<pre><code class="language-javascript">function mysum(num1, num2){
    alert(&#39;안녕!&#39;)
    return num1+num2
}

let result2 = mysum(2, 3)

result2
5</code></pre>
<p>✔️ 이 부분도 조금 의문이었다
✔️ 변수를 선언한 단계에서 이미 <code>alert</code> 가 실행 된다
✔️ 이 부분은 조금 더 찾아봐야 이해할 수 있을 듯 하다</p>
<ul>
<li>괄호 <code>()</code> 안에 아무것도 넣지 않아도 함수 실행이 가능하다</li>
<li><code>alert</code> 창이 연속으로 실행 된다</li>
</ul>
<h1 id="4-5-조건문">4-5. 조건문</h1>
<ul>
<li><code>if / else</code> 구문</li>
</ul>
<pre><code class="language-javascript">let sex = &#39;남성&#39;

if (age &gt; 20 &amp;&amp; sex == &#39;남성&#39;) {
    console.log(&#39;성인 남성입니다&#39;)
} else {
    console.log(&#39;청소년입니다&#39;)
}

성인 남성입니다</code></pre>
<ul>
<li><code>&amp;&amp;</code> 는 양쪽 모두 조건을 만족한다는 뜻의 <code>AND</code> 의 기호이다</li>
<li><code>||</code> 는 양쪽 중 하나의 조건을 만족할 때 사용하는 <code>OR</code> 의 기호이다</li>
<li>세 가지 조건 중 하나일 때는 <code>if / else if / else</code> 구문을 사용한다</li>
</ul>
<pre><code class="language-javascript">if (age &gt; 20) {
    console.log(&#39;성인입니다&#39;)
} else if (age &gt; 7) {
    console.log(&#39;청소년입니다&#39;)
} else {
    console.log(&#39;아동입니다&#39;)
} </code></pre>
<h1 id="4-6-반복문">4-6. 반복문</h1>
<pre><code class="language-javascript">for (let i = 0; i &lt; 10; i++) {
    console.log(i)
}

0
1
2
3
4
5
6
7
8
9 </code></pre>
<ul>
<li><code>++</code> 는 1 씩 추가하는 기호이다</li>
<li>i 가 10 과 같아질 때까지 함수 실행을 반복한다</li>
</ul>
<pre><code class="language-javascript">let people = [&#39;철수&#39;,&#39;영희&#39;,&#39;민수&#39;,&#39;형준&#39;,&#39;기남&#39;,&#39;동희&#39;]

people.length
6

for (let i = 0; i &lt; people.length; i++) {
    console.log(people[i])
}

철수
영희
민수
형준
기남
동희</code></pre>
<p>✔️ 또 궁금한 것이 생긴 부분
✔️ List 에 담긴 개수를 세는 함수 같은데 왜 <code>length</code> 라고 부를까?</p>
<ul>
<li>List 를 한 바퀴 돌아라 라는 뜻의 반복문으로 자주 사용 된다</li>
</ul>
<pre><code class="language-javascript">let scores = [
    {&#39;name&#39;:&#39;철수&#39;, &#39;score&#39;:90},
    {&#39;name&#39;:&#39;영희&#39;, &#39;score&#39;:85},
    {&#39;name&#39;:&#39;민수&#39;, &#39;score&#39;:70},
    {&#39;name&#39;:&#39;형준&#39;, &#39;score&#39;:50},
    {&#39;name&#39;:&#39;기남&#39;, &#39;score&#39;:68},
    {&#39;name&#39;:&#39;동희&#39;, &#39;score&#39;:30}
]

scores[0]
{name: &#39;철수&#39;, score: 90}

scores[1]
{name: &#39;영희&#39;, score: 85}

scores[1][&#39;score&#39;]
85</code></pre>
<ul>
<li>List 에 들어가는 하나의 요소에 여러 값을 넣을 때에는 괄호 <code>{}</code>를 사용한다</li>
<li>List 에 Dictionary 를 요소로 넣은 형태</li>
</ul>
<pre><code class="language-javascript">for (let i = 0; i &lt; scores.length; i++) {
    console.log(scores[i])
}

{name: &#39;철수&#39;, score: 90}
{name: &#39;영희&#39;, score: 85}
{name: &#39;민수&#39;, score: 70}
{name: &#39;형준&#39;, score: 50}
{name: &#39;기남&#39;, score: 68}
{name: &#39;동희&#39;, score: 30}</code></pre>
<pre><code class="language-javascript">for (let i = 0; i &lt; scores.length; i++) {
    let name = scores[i][&#39;name&#39;]
    let score = scores[i][&#39;score&#39;]
    console.log(name, score)
}

철수 90
영희 85
민수 70
형준 50
기남 68
동희 30</code></pre>
<pre><code class="language-javascript">for (let i = 0; i &lt; scores.length; i++) {
    let name = scores[i][&#39;name&#39;]
    let score = scores[i][&#39;score&#39;]
    if (score &lt; 70) {
        console.log(name, score)
    }
}

형준 50
기남 68
동희 30</code></pre>
<pre><code class="language-javascript">for (let i = 0; i &lt; bikes.length; i++) {
    let name = bikes[i][&#39;stationName&#39;]
    let bike = bikes[i][&#39;parkingBikeTotCnt&#39;]
    if (bike &lt; 1) {
        console.log (name, bike)
    }
}

161. 무악재역1번 출구 0
163. 명지전문대학교 정문 앞 0
176. 명지대학교 도서관 0
178. 증산3교 앞 0
192. 연서어린이공원 0</code></pre>
<ul>
<li>데이터에서 특정 조건의 데이터만 추출하는 방법으로 자주 사용 되니 연습하자</li>
</ul>
<hr>
<p>Javascript 에서 모르는 부분이 너무 많아 예시를 모두 적다보니 글이 길어지게 되었다. 그래도 강의를 듣는 것도, 숙제를 하는 것도, 또 이 글을 쓰는 것도 너무 즐거웠다. 이런 글을 쓰는 것 자체가 정말 오랜만이라 어떻게 해야 할지 고민이었는데 수업 중에 필기를 열심히 해둔 보람이 있다. velog 도 항상 읽기만 했었는데 마크다운 (markdown) 작성법도 찾아보고 사용해보니 더욱 보람차다. 이 글을 쓰느라 2주차 강의도 벌써 지각이지만, 이번 주도 화이팅! 👍</p>
]]></description>
        </item>
    </channel>
</rss>