<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>study hard!</title>
        <link>https://velog.io/</link>
        <description>hello there</description>
        <lastBuildDate>Wed, 13 Jul 2022 02:46:17 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>study hard!</title>
            <url>https://velog.velcdn.com/images/y-jin112/profile/87b8d340-c332-4b69-be30-76665e7eb55b/image.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. study hard!. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/y-jin112" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[C# 반복문(while, do, for, foreach)]]></title>
            <link>https://velog.io/@y-jin112/C-%EB%B0%98%EB%B3%B5%EB%AC%B8while-do-for-foreach</link>
            <guid>https://velog.io/@y-jin112/C-%EB%B0%98%EB%B3%B5%EB%AC%B8while-do-for-foreach</guid>
            <pubDate>Wed, 13 Jul 2022 02:46:17 GMT</pubDate>
            <description><![CDATA[<h3 id="--while-참-일때-동안-반복">- while (참 일때 동안 반복)</h3>
<p>while 문의 기본 형태</p>
<pre><code>while (조건식) {
    //반복 실행될 코드
}</code></pre><p>조건식은 if문과 마찬가지로 true 또는 false가 반환되어야 한다. while문의 특징은 조건식이 참일 때 동안 계속해서 반복하여 코드를 실행한다 만약 반복하다 조건식이 거짓이 되면 루프(반복되는 부분)를 빠져나온다. 그러나 조건식이 계속 참이라면 루프를 빠져나오지 못하고 계속 반복하게 되는 무한루프에 빠진다.</p>
<p>while문을 사용하여 num이 10보다 커질때까지 반복하는 예제</p>
<pre><code>using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int num=1;
            while (num &lt; 10)
                Console.WriteLine(&quot;num:{0}&quot;,num++);
        }
    }
}</code></pre><pre><code>//콘솔창
num: 1
num: 2
num: 3
num: 4
num: 5
num: 6
num: 7
num: 8
num: 9
num: 10
계속하려면 아무 키나 누르십시오 . . .</code></pre><p>만약 num 값을 증가하는 부분을 빼버린다면</p>
<pre><code>while (num &lt;= 10)
                Console.WriteLine(&quot;num: {0}&quot;, num);</code></pre><p>결과 </p>
<pre><code>num: 1
num: 1
num: 1
num: 1
num: 1
num: 1
...</code></pre><p>num의 값이 1에서 항상 머무르기 때문에 조건식을 항상 만족하고 num의 값을 출력</p>
<h2 id="dowhile한번은-먼저-실행-후-반복">do~while(한번은 먼저 실행 후 반복)</h2>
<pre><code>do {
    //반복 실행될 코드
} while (조건식); //여기서 주의할것은 마지막에 세미콜론이 붙는다는 것이다.</code></pre><p>조건식을 먼저 검사하고 코드를 실행하는 while문과는 달리 do~while문은 먼저 한번 코드를 실행시키고 그 다음에 조건식을 검사한다.</p>
<p>꼭 기억해야 할 것은, do while문을 사용하면 조건식을 만족하든 만족하지 않든 반드시 한번은 실행이 된다는 것이다.</p>
<pre><code>
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int num = 1;
                do {
                    Console.WriteLine(&quot;num:{0}&quot;,num++)
                } while (num &lt;= 10);
        }
    }
}</code></pre><pre><code>num: 1
num: 2
num: 3
num: 4
num: 5
num: 6
num: 7
num: 8
num: 9
num: 10
계속하려면 아무 키나 누르십시오 . . .</code></pre><p>결과를 보면 while 문을 사용했을 때의 결과와 다른게 없다.
그러나 우리가 프로그램을 만들다 보면 우선 검사하고 나중에 실행하는 while문이 아닌 먼저 실행하고 나중에 검사하는 do~while 문이 필요할때가 있다.
꼭 한번은 실행시키고 검사를 해야 하는 상황이 발생했을때 유용하게 쓰인다.</p>
<h2 id="for참이-될-때까지-반복">for(참이 될 때까지 반복)</h2>
<p>for문은 while문과 같이 특정 조건을 만족할때까지 반복에 쓰인다. 비교해보면 for문은 while 문보다 쓰기도 쉽고, 초기화부분과 증감부분이 따로 놀지도 않는다.  while문과 for문을 비교해보면</p>
<pre><code>for(초기식; 조건식; 증감식) {
    // 반복해서 실행될 코드
}</code></pre><pre><code>초기식;

while(조건식) {
    // 반복해서 실행될 코드
    증감식
}</code></pre><p>초기식에는 반복을 실행하기 전 반복문에서 사용 될 변수를 초기화 하는 부분이다.
조건식은 그대로 반복 여부를 결정하는 부분이고, 증감 식은 반복문을 빠져나오기 위하여 어느 변수의 값을 감소시키거나 증가시키는 부분을 말한다.
아래는 while문, do~while문에 쓰였던 예제를 for문으로 다시 구현한 것이다.</p>
<pre><code>using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int num = 1; num &lt;= 10; num++)
                Console.WriteLine(&quot;num: {0}&quot;, num);
        }
    }
}</code></pre><p>결과</p>
<pre><code>num: 1
num: 2
num: 3
num: 4
num: 5
num: 6
num: 7
num: 8
num: 9
num: 10
계속하려면 아무 키나 누르십시오 . . .</code></pre><blockquote>
<p>(for문의 실행흐름) 초기식 - 조건식 - 코드실행 - 증감식 - 조건식 - 코드실행 - 증감식 ...</p>
</blockquote>
<p>초기식에 num이란 변수가 선언되고 1이란 값으로 초기화된다. 이 초기식은 단 한번만 실행되고 여기서 선언된 num이란 변수는 for문이 끝나면 알아서 소멸한다. 그 다음에 조건식을 거친다.
num이 10보다 작거나 같으면 조건을 만족하고 코드 실행부로 넘어간다. 그 다음 코드가 실행되고 증감식으로 넘어가 num의 값이 1만큼 증가한 뒤에 다시 조건식으로 돌아와 검사하고 코드가 실행되고 증감식으로 넘어가는것을 반복한다. 그러다 조건을 만족하면 for문으로 빠져나온다.</p>
<h2 id="foreach-순회하며-차례대로-접근">foreach (순회하며 차례대로 접근)</h2>
<p>동일한 성격의 변수들이 일렬로 서있다고 생각하면 된다. 간단히 변수 여러개를 한곳에 가져다가 붙였다고 생각하면 쉽다.</p>
<p>기본적인 foreach문의 형태는</p>
<pre><code>foreach (변수 in 배열 혹은 컬렉션) {
    // 실행될 코드
}</code></pre><pre><code>using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int [] arr = {1, 2, 4, 5, 6, 8, 9, 22, 10};

            foreach (int i in arr)
                Console.Writeline(&quot;i: {0}&quot;, i);
        }
    }
}</code></pre><p>결과</p>
<pre><code>i: 1
i: 2
i: 4
i: 5
i: 6
i: 8
i: 9
i: 22
i: 10
계속하려면 아무 키나 누르십시오 . . .</code></pre><p>foreach문은 배열에 담겨있는 각각의 데이터를 순회하면서 변수 i 에 집어넣는다.
그 전에 int에 [ ]가 붙고 괄호 내에 데이터들이 각각 콤마를 기준으로 하여 등장한다
여기서 각각의 데이터들을 &#39;요소&#39;라고 부른다.</p>
<h2 id="반복문의-중첩">반복문의 중첩</h2>
<p>while, for, do~while 문은 if문 처럼 중첩이 가능하다. for문 안에 for문이 사용 될 수도 있고, for문 내에 while 문이 사용 될 수도 있다. 상황에 따라서는 for문이 3번이상 중첩 될 수 있다. 그 중에서 많이 쓰이는 중첩이 for문의 중첩이다.</p>
<pre><code>for(...; ...; ...) {
    for(...; ...; ...) {
        ...
    }
}</code></pre><p>for문을 두번 사용하여 구구단을 출력한 예제</p>
<pre><code>using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            for (int a = 2; a &lt; 10; a++)
            {
                for (int b = 1; b &lt; 10; b++)
                {
                    Console.WriteLine(&quot;{0} * {1} = {2}&quot;, a, b, a * b);
                }
            }
        }
    }
}</code></pre><p>결과</p>
<pre><code>2 * 1 = 2
2 * 2 = 4
2 * 3 = 6
2 * 4 = 8
2 * 5 = 10
2 * 6 = 12
2 * 7 = 14
...
9 * 5 = 45
9 * 6 = 54
9 * 7 = 63
9 * 8 = 72
9 * 9 = 81
계속하려면 아무 키나 누르십시오 . . .</code></pre><p>for문을 두번만 사용하였는데 반복을 72번 수행해서 구구단을 출력하였다</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[C# 변수, 데이터형식, 상수]]></title>
            <link>https://velog.io/@y-jin112/C-%EB%B3%80%EC%88%98-%EB%8D%B0%EC%9D%B4%ED%84%B0%ED%98%95%EC%8B%9D-%EC%83%81%EC%88%98</link>
            <guid>https://velog.io/@y-jin112/C-%EB%B3%80%EC%88%98-%EB%8D%B0%EC%9D%B4%ED%84%B0%ED%98%95%EC%8B%9D-%EC%83%81%EC%88%98</guid>
            <pubDate>Tue, 12 Jul 2022 02:56:42 GMT</pubDate>
            <description><![CDATA[<h2 id="변수">변수</h2>
<p>변수는 쉽게 말하면 값을 담아 두는 상자와 같다.
변수는 하나의 데이터 값을 가질 수 있으며, 한번 정해진 값은 고정이 아니라 계속해서 변할 수 있다. 또한 이 변수라는 녀석은 담기는 음식에 따라 그릇이 달라지듯 담기는 데이터에 따라 변수의 자료형(data type)이 결정된다. 
문자는 문자를 담을수 있는 char 자료형, 정수는 정수를 담을 수 있는 int가 있다.</p>
<pre><code>자료형 변수명;</code></pre><p>변수를 만든다X 변수를 선언한다O 선언은 컴파일러에게 어떤 대상의 이름을 알려주는 것을 의미.
컴파일러가 임의의 메모리 공간에 이름을 붙여주면, 우리는 변수의 이름을 가지고 그 메모리의 위치에 접근 할 수 있다.</p>
<pre><code>int a;
//int 자료형  a 변수명</code></pre><p>정수형 변수를 메모리 공간에 할당하고 그 공간에 a라는 이름을 붙인것</p>
<h2 id="자료형">자료형</h2>
<ul>
<li><span style='background-color: #f5f0ff'>정수 자료형</span> - 정수(1,2,3 ...) byte, sbyte, short, ushort, int, uint, long, ulong</li>
<li><span style='background-color: #f5f0ff'>실수 자료형</span> - 소숫점(1.234) float, double, decimal </li>
<li><span style='background-color: #f5f0ff'>문자 자료형</span> - 문자 char 문자열 string</li>
</ul>
<pre><code>
using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            char a = &#39;안&#39;;
            string b = &quot;녕하세요&quot;;

            Console.WriteLine(&quot;{0}{1}&quot;, a, b);
        }
    }
}
</code></pre><pre><code>안녕하세요
계속하려면 아무 키나 누르십시오...
</code></pre><p>문자는 작은따옴표(&#39;) 문자열은 큰따옴표(&quot;)로 감싸주어야 한다.
<br></p>
<ul>
<li><span style='background-color: #f5f0ff'>논리 자료형</span>
참과 거짓을 다루는 bool 형식</li>
</ul>
<pre><code>using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            bool a = true;
            bool b = false;

            Console.WriteLine(&quot;a={0}, b={1}&quot;, a, b);
        }
    }
}</code></pre><pre><code>a=true, b=false
계속하려면 아무 키나 누르십시오...</code></pre><ul>
<li><span style='background-color: #f5f0ff'>객체 자료형</span>
객체(object)를 다루는 object형식</li>
</ul>
<pre><code>    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            object a = 12345678910;
            object b = 12345.67891011;
            object c = true;
            object d = &quot;안녕하세요&quot;;

            Console.WriteLine(&quot;a={0}, b={1}, c={2}, d={3}&quot;, a, b, c, d);
        }
    }
}</code></pre><pre><code>    a=12345678910, b=12345.67891011, c=True, d=안녕하세요
    계속하려면 아무 키나 누르십시오 . . .</code></pre><h2 id="서식지정자">서식지정자</h2>
<p>서식 지정자는 내가 지정한 형식대로 문자열을 출력 할 수 있도록 도와준다.
위에서 본 {0}이나 {1}과 같은 녀석들을 서식 항목이라 하며, 서식 항목은 이와 같은 형식으로 작성 할수 있다.</p>
<pre><code>{인덱스[, 출력 너비][:서식 문자열]}</code></pre><p><em>대괄호로 둘러싸인것은 선택적인 요소</em></p>
<p>index는 0부터 시작하는데, &quot;a,b,a+b&quot; 와 같이 뒤에 열거된 값의 순서이다.</p>
<p><img src="https://velog.velcdn.com/images/y-jin112/post/be45a825-2be2-4582-bd05-8338e484fe65/image.png" alt=""></p>
<pre><code>int a = 81, b = 27;

Console.WriteLine(&quot;{0} + {1} = {2}&quot;, a, b, a + b); // 81 + 27 = 108
Console.WriteLine(&quot;{1} - {0} = {2}&quot;, a, b, b - a); // 27 - 81 = -54
</code></pre><h2 id="형식변환">형식변환</h2>
<pre><code>using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 500;
            float b = a; // 암시적 변환으로 별도의 구문이 필요하지 않음 

            Console.WriteLine(&quot;a={0}, b={1}&quot;, a, b);

            double c = 123.45;
            int d = (int)c;

            Console.WriteLine(&quot;c={0}, d={1}&quot;, c, d);
        }
    }
}</code></pre><pre><code>a=500, b=500
c=123.45, d=123
계속하려면 아무 키나 누르십시오 . . .</code></pre><p><strong>실수와 정수를 문자열로 반환, 문자열을 실수나 정수로 형식으로 변환</strong></p>
<pre><code>using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int a = 500;
            float b = 60.44f;
            string c = a.ToString();
            string d = b.ToString();

            Console.WriteLine(&quot;a={0}, b={1}, c={2}, d={3}&quot;, a, b, c, d);

            string e = &quot;123&quot;;
            string f = &quot;123.456&quot;;
            int g = int.Parse(e);
            float h = float.Parse(f);

            Console.WriteLine(&quot;e={0}, f={1}, g={2}, h={3}&quot;, e, f, g, h);
        }
    }
}
</code></pre><pre><code>a=500, b=60.44, c=500, d=60.44
e=123, f=123.456, g=123, h=123.456
계속하려면 아무 키나 누르십시오 . . .</code></pre><p><span style='background-color: #f5f0ff'>ToString() 메소드</span>는 특정 형식의 값을 문자열 형식으로 바꿔주는 역할을 합니다. 
그리고 <span style='background-color: #f5f0ff'>Parse()라는 메소드</span>를 통해 문자열을 정수나 실수로 바꿔줄 수도 있습니다. </p>
<h2 id="상수">상수</h2>
<p>코드를 작성할 때 수천줄에서 수만줄이 넘어가는 프로그램을 만들게 될 때, 수많은 변수를 선언하여 코드를 작성하게 된다. 그러나 이 수많은 변수 중 값이 도중에 변경되어도 프로그램엔 영향을 미치지않는 것과 도중에 변경되면 심각한 오류를 일으킬 수 있는 것들이 있다.
코드를 작성하다가 나도 모르게 값을 변경하지 말아야 할 변수를 건드려서 버그가 발생할수있다.
C# 프로그래밍은 이 문제를 쉽게 해결해주는 <span style='background-color: #f5f0ff'>const</span> 라는 키워드가 존재한다.</p>
<p>이 const 키워드를 사용하게 되면 한번 초기화 된 값은 절대 변하지 않는다.
상수를 정의하는 방법은 변수의 선언방법과 유사하다.
상수의 선언 예제</p>
<pre><code>const double PI = 3.141592;
const int month = 12;</code></pre><pre><code>using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            const int a = 50;

            Console.WriteLine(a);
        }
    }
}</code></pre><pre><code>50
계속하려면 아무 키나 누르십시오 . . .</code></pre><p>상수 a 값을 변경하게 된다면</p>
<pre><code>using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            const int a = 50;

            a = 60; // 오류 발생!

            Console.WriteLine(a);
        }
    }
}</code></pre><pre><code>11행에서 오류 CS0131: 할당식의 왼쪽은 변수, 속성 또는 인덱서여야 합니다.
//값 변경이 불가능하다.</code></pre><p>상수의 선언과 초기화를 분리한다면?</p>
<pre><code>     const int a;

            a = 60; // 오류 발생!</code></pre><pre><code>11행에서 오류 CS0145: const 필드에 값을 입력해야 합니다.</code></pre><h4 id="const의-특징">const의 특징</h4>
<p>선언과 동시에 초기화를 하여야 하며, 초기화가 된 후로부터는 값의 변경이 불가능한 것을 알 수있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[C# 기초]]></title>
            <link>https://velog.io/@y-jin112/C-%EA%B8%B0%EC%B4%88-2j17y5m0</link>
            <guid>https://velog.io/@y-jin112/C-%EA%B8%B0%EC%B4%88-2j17y5m0</guid>
            <pubDate>Tue, 12 Jul 2022 01:25:06 GMT</pubDate>
            <description><![CDATA[<pre><code>using System;                         // namespace system을 사용하는 것
using System.Collections.Generic; //제네릭 컬렉션을 정의하는 클래스와 인터페이스들이 들어있음 (system.collections.generic 자료형&lt;key,value&gt; 열거형에 사용)
using System.Linq;              //Linq를 사용하는 쿼리를 지원하는 클래스, 인터페이스가 들어있음
using System.Text;      
using System.Threading.Tasks;

namespace ConsoleApplication4 //구조체, 클래스, 델리게이트, 인터페이스등을 그룹화 한 것
{                             //namespace는 사용하기 편리하게끔 성격이 비슷한 것들을 묶어 놓는것과 같다.
    class Program             //class는 필드(field)와 메소드(method)로 나뉘게 된다. 필드는 정적인 상태, 메소드는 동적인 기능을 표현.
    {
        static void Main(string[] args) //static void Main - 메소드. main 메소드 -&gt; 최초의 진입점
                                        //모든 프로그램에는 메소드가 존재해야하며, 메인 메소드가 시작되면 프로그램이 시작되고, 종료되면 프로그램도 같이 종료된다.
        {                            //void는 반환 형식으로 반환 값이 없음을 의미.
                                    //메소드는 C언어 함수(Function)와 같다.
            Console.Write(&quot;Hello World&quot;);
        }
    }
}
</code></pre><br>

<p><strong>구조체</strong>
구조체(structure type)란 사용자가 C언어의 기본타입을 가지고 새롭게 정의할 수 있는 사용자 정의 타입이다. 구조체는 기본타입으로는 나타낼 수 없는 복잡한 데이터를 표현 할 수 있다.</p>
<pre><code>struct 구조체이름
//키워드 구조체이름
{

    멤버변수1의타입 멤버변수1의이름;

    멤버변수2의타입 멤버변수2의이름;

    ...
};</code></pre><pre><code>struct book
{
    char title[30];
    char author[30];
    int price;
}; &lt;- 세미콜론은 구조체 정의를 종료한다는 의미.
</code></pre><p>struct라는 키워드를 사용하여 구조체 시작을 알리고, 구조체 이름인 book으로 구조체를 정의,
중괄호 사이에 char title[30]; char author[30]; int price; 와 같은 변수들은 book의 멤버 변수들이다.</p>
<p><strong>LINQ?</strong> 
LINQ 쿼리에서는 항상 개체를 사용한다. XML 문서, SQL데이터 베이스, ADO.NET 데이터세트, 
.NET 컬렉션 및 LINQ 공급자를 사용할 수 있는 다른 모든 형식에서 데이터를 쿼리하고 변환하는데 동일한 기본 코딩 패턴을 사용한다.</p>
<p> <span style='background-color: #f5f0ff'>쿼리의 작업</span></p>
<ol>
<li>데이터소스 가져오기 2. 쿼리 만들기 3. 쿼리 실행하기</li>
</ol>
<p><strong>필드와 메소드</strong></p>
<pre><code>class Cat{
  /*fields*/
  String name;    //이름
  String species; //고양이종
  double size;    //크기
  duble weight;    //몸무게

  /*methods*/
  void meow(){
  //야옹
  }
  void scratch(){
  //햘퀴기
  }
}</code></pre><p>필드 : 객체의 정보(상태)
메소드 : 객체의 동작(기능)이다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[[My SQL] 스토어드 프로시저(Stored Procedure)]]></title>
            <link>https://velog.io/@y-jin112/My-SQL-%EC%8A%A4%ED%86%A0%EC%96%B4%EB%93%9C-%ED%94%84%EB%A1%9C%EC%8B%9C%EC%A0%80Stored-Procedure</link>
            <guid>https://velog.io/@y-jin112/My-SQL-%EC%8A%A4%ED%86%A0%EC%96%B4%EB%93%9C-%ED%94%84%EB%A1%9C%EC%8B%9C%EC%A0%80Stored-Procedure</guid>
            <pubDate>Mon, 11 Jul 2022 01:36:38 GMT</pubDate>
            <description><![CDATA[<h3 id="프로시저란">프로시저란?</h3>
<p>여러 쿼리를 한번에 수행하는 것</p>
<p>마치 SQL 문법의 함수(Function)와 아주 유사한 느낌이다. 하지만 우리가 아는 SQL 함수와는 차이가 있다.</p>
<p><strong>함수(Function):클라이언트에서 처리, 리턴값 필수, 리턴값 하나만 반환가능</strong></p>
<p><strong>프로시저(Procedure):서버로 보내서 처리, 리턴값 선택, 리턴값 여러개 반환 가능</strong></p>
<p>SQL 처리를 하는 위치에서의 차이점인데 <span style="color:olivedrab">속도면에서는 프로시저가 더 빠른 성능을 보인다.</span>
때문에 각각의 요도는 프로시저 같은 경우 실행, 처리 할 때 주로 사용되고, 함수는 간단한 계산이나 수치 결과를 나타낼 때 주로 사용한다.
<br></p>
<p>사실 <span style="color:indianred">프로시저는 처리성능과 재사용면에서 좋지 않다. </span>
하지만 그럼에도 프로시저를 사용해야 하는 이유가 여러가지 존재한다.</p>
<ol>
<li><span style='background-color: #f5f0ff'>하나의 요청으로 여러 SQL문을 실행 가능</span></li>
<li><span style='background-color: #f5f0ff'>네트워크 소요 시간을 줄일 수 있음(여러개의 쿼리를 처리하는 시점에서 네트워크 부하를 줄임)</span></li>
<li><span style='background-color: #f5f0ff'>보수성이 뛰어나다</span></li>
<li><span style='background-color: #f5f0ff'>개발업무를 구분하여 개발할 수 있다. (DB관련 처리를 API처럼 만들어 제공)</span></li>
</ol>
<hr>
<p>프로시저 문법과 예시</p>
<pre><code>DELIMITER $$
CREATE PROCEDURE &#39;TEST_PROC&#39;(
    --파라미터 선언
    PARAM_NAME VARCHAR(20),
    PARAM_AGE INT
)
BEGIN
    --변수 선언
    DECLARE PARAM_NUM INTEGER;

    --쿼리문1
    SELECT COUNT(*) +1
        INTO PARAM_NUM
        FROM table1;

   --쿼리문2
   INSERT INTO table1(total_count, user_name, user_age) VALUES(PARAM_NUM, PARAM_NAME, PARAM_AGE);
   END $$
DELIMITER ;
</code></pre><p><span style="color:olivedrab">파라미터 선언은 프로시저명()안에서 선언하고 SQL문과 변수 선언은 BEGIN~END 사이</span>에 작성한다.
그리고 SELECT 사용 시에는 <span style="color:olivedrab">조회한 컬럼(데이터)을 반드시 INTO로 변수 안에 </span> 넣어줘야 하며,
프로시저 내부에서 사용하는 <span style="color:olivedrab">SQL문은 일반 SQL문이기 때문에 세미콜론(;)으로 문장을 끝맺어야 한다.</SPAN></p>
<p>첫번째와 마지막 라인에 DELIMITER라는 이상한 단어가 있는걸 확인 할 수 있는데 <span style="color:olivedrab">프로시저 작성이 완료되지 않았음에도 SQL문이 실행되는 것을 막기 위해 사용</SPAN>된다.</p>
<p>(구분자(;)를 다른 구분자로 바꿨다가 프로시저 작성이 끝나면 다시 구분자를 원래대로 되돌림)
<br></p>
<p>예시1(호출)</p>
<pre><code>CALL TEST_PROC(&#39;테스트이름&#39; 21);</code></pre><p>이처럼 프로시저 호출은 다음과 같이 <strong>CALL 프로시저명(파라미터);</strong> 로 사용해 함수처럼 손쉽게 사용할수있다.</p>
<p>프로시저를 호출하면 MYSQL은 Database 카탈로그에서 프로시저 이름을 찾아 SQL문을 컴파일하고 메모리 공간(cache)에 저장한 뒤 프로시저를 실행시킨다.</p>
<blockquote>
<p>DB카탈로그 -&gt; SQL 컴파일 -&gt; 메모리 저장 -&gt; 실행</p>
</blockquote>
<p>또한 if, case, loop같은 제어, 반복문을 사용해 보다 향상된 SQL코드를 작성 할 수 있고
프로시저 내에서 다른 프로시저를 호출할수도 있다.
<br>
예시2(IN, OUT, INOUT 사용)</p>
<pre><code>DELIMITER $$
CREATE PROCEDURE &#39;TEST_PROC2&#39;(
    IN loopCount1 INT,     -- input : 10
    IN loopCount2 INT,       -- input : 20
    OUT rst1 INT,
    OUT rst2 INT,
    INOUT rst3 INT
)
BEGIN
    DECLARE NUM1 INTEGER DEFAULT 0;        --DEFAULT : 초기값 설정
    DECLARE NUM2 INTEGER DEFAULT 0;        
    DECLARE NUM3 INTEGER DEFAULT 0;

    WHILE NUM1&lt;loopCount1 DO            --NUM1은 0~9까지 10번 반복
        WHILE NUM2&lt;loopCount2 DO        --NUM2는 0~19까지 20번 반복
            SET NUM3 = NUM3 +1;
            SET NUM2 = NUM2 +1;
        END WHILE;

        SET NUM3 = NUM1 +1;
        SET NUM2 = 0;
       END WHILE;

    SET rst1 = NUM1;
    SET rst2 = NUM3;
    SET rst3 = rst1 + rst2 + rst3;
END $$
DELIMITER;
</code></pre><p>이번에는 파라미터에 IN, OUT을 사용하고 프로시저 내부에서 반복문도 사용하였다.</p>
<p>IN
<span style="color:olivedrab">프로시저에 값을 전달</span>하며, 프로시저 내부에서 값을 수정할 수는 있지만 프로시저가 반환되고 나서 호출자가 수정은 불가능 하다.
즉 <span style="color:olivedrab"><strong>원본 값은 프로시저가 끝난 후에도 유지되며, 프로시저는 IN 파라미터의 복사본을 사용</strong></span>한다.</p>
<p>OUT
<span style="color:olivedrab">프로시저의 값을 호출자에게 다시 Return </span>한다.
초기값은 프로시저 내에서 NULL이며 프로시저가 반환될 때 새로운 값이 호출자에게 Return되고 프로그램이 시작될 때, OUT파라미터의 초기값에 접근할 수 없다.</p>
<p>INOUT
<span style="color:olivedrab">호출자에 의해 하나의 변수가 초기화되고 프로시저에 의해 수정</span>된다. 간단하게 IN + OUT 이라고 생각하면 됨. 프로시저가 Return될 때 프로시저가 변경한 사항은 호출자에게 Return 된다.</p>
<p>예시2(호출)</p>
<pre><code>-- 변수 초기화
DECLARE @NUM1 = 0;
DECLARE @NUM2 = 0;
DECLARE @NUM3 = 0;

--NUM3에 값 30 할당 (@는 전역변수, 프로시저가 끝나도 계속 유지되는 값)
SET @NUM3 = 30;
--(10(IN), 20(IN), Return 받을 변수 (OUT), Return받을 변수(OUT), Return도 받고 값도 가지고 있는 변수(INOUT))
CALL TEST_PROC2(10, 20, @NUM1, @NUM2, @NUM3);

SELECT @NUM1, @NUM2, @NUM3;
--RESULT =&gt; @NUM1 : 10, @NUM2 : 200, @NUM3 : 240
</code></pre><p>위의 IN,OUT,INOUT의 설명에 맞게 파라미터를 넣어 준 뒤 예시 1과 동일하게 호출하면 된다</p>
<hr>
<h3 id="추가-문법-및-용어-정리">추가 문법 및 용어 정리</h3>
<p>프로시저 목록 확인</p>
<pre><code>SHOW PROCEDURE STATUS;</code></pre><p>프로시저 내용 확인</p>
<pre><code>SHOW CREATE PROCEDURE 프로시저 이름;</code></pre><p>프로시저 삭제</p>
<pre><code>DROP PROCEDURE 프로시저이름;</code></pre><p>조건문(IF) 예시</p>
<pre><code>IF total &gt;= 95 AND total &lt;= 100 THEN
    SET grade = &#39;A+&#39;;
ELSE
    IF total &gt;= 90 THEN
            SET grade = &#39;A&#39;;
    END IF;
END IF;</code></pre><p>조건문(CASE)예시</p>
<pre><code>CASE NUM
    WHEN &#39;Apple&#39; THEN
        SET &#39;result_Str&#39; = &#39;apple_cookie&#39;;
    WHEN &#39;Banana&#39; THEN
        SET &#39;result_Str&#39; = &#39;banana_cookie&#39;;
    ELSE
        SET &#39;result_Str&#39; = &#39;orange_cokkie&#39;;
END CASE;</code></pre><p><a href="https://spiderwebcoding.tistory.com/7">참고 포스팅</a></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[asp.net 의 웹폼]]></title>
            <link>https://velog.io/@y-jin112/asp.net-%EC%9D%98-%EC%9B%B9%ED%8F%BC</link>
            <guid>https://velog.io/@y-jin112/asp.net-%EC%9D%98-%EC%9B%B9%ED%8F%BC</guid>
            <pubDate>Thu, 07 Jul 2022 02:04:19 GMT</pubDate>
            <description><![CDATA[<h3 id="웹-폼">웹 폼</h3>
<p>웹폼(Web Form)은 ASP.NET의 기본 철학이라고 할 수 있는 <strong>프로그래밍이 가능한 웹 페이지</strong>를 구성 하는데 사용되는 핵심적인 기술.</p>
<p>이를 통해 마치 Visual Basic으로 윈도 애플리케이션을 만드는것과 동일한 방법으로 애플리케이션을 작성할 수 있게 되었다. </p>
<p>&#39;웹 폼&#39;은 &#39;ASP.NET페이지&#39;와 같은 용어로 사용된다. 인터넷 환경에서 정보를 요청한 클라이언트의 웹 브라우저에 보내져야 할 결과는 어차피 HTML 태그로 이루어진 텍스트 기반의 코드이다.
따라서 <span style="color:olivedrab">웹 폼은 사용자에게 정보를 전달하기 위해 HTML을 이용하고 애플리케이션 로직을 구현하기 위해 서버측 코드(server side code)를 사용하는 기술</span>이다.</p>
<h4 id="웹폼의-구성">웹폼의 구성</h4>
<ul>
<li>표현 부분(시각적인 부분)
태그, 서버 컨트롤, 정적 텍스트와 같이 웹 폼을 시각적으로 나타낼 수 있는 요소가 위치</li>
<li>코드 부분(내부 로직 부분)
.NET 언어를 통해 작성한 내부 로직이 위치</li>
</ul>
<p><img src="https://velog.velcdn.com/images/y-jin112/post/792329f6-7461-4fdf-b672-66ac81e070a4/image.jpg" alt=""></p>
<p>웹 폼은 사용자 인터페이스를 담당하는 컨텐츠 부분과 프로그램 로직을 담당하는 서버코드 부분으로 구성된다.
<br><br></p>
<p><strong>단일 파일 페이지 모델(Single-file Page model)</strong>
코드 부분과 표현 부분이 .aspx 파일(동일한 웹 폼)에 같이 존재하는 형태
코드와 태그를 한 곳에서 확인 할수 있으므로 쉽게 웹 폼을 분석 할 수 있다
파일간에 종속성이 없으므로 단일 파일 페이지의 이름을 쉽게 수정 할 수 있다</p>
<hr>
<pre><code>&lt;script runat=&quot;server&quot;&gt;
//내부로직
&lt;/scrpt&gt;
코드부분 (Logic)</code></pre><hr>
<pre><code>&lt;html&gt;
&lt;body&gt;
...
&lt;/body&gt;
&lt;/html&gt;
표현부분</code></pre><hr>
<p><br><br></p>
<p> <strong>코드 숨김 페이지 모델(Code-Behind Page Model)</strong></p>
<p>APS.NET에서 컨텐츠와 코드를 분리하는게 가능한 이유는 서버 코드 상에서 제어 할 수 있는 서버 컨트롤이 제공되기 때문이다. 이러한 서버 컨트롤은 크게 <em>HTML 서버 컨트롤</em> 과 _웹 폼 컨트롤_로 구분된다</p>
<p>표현 부분은 .aspx 파일, 코드부분은 다른 클래스 파일(.cs파일)에 놓여지는 형태
코드 부분과 표현 부분을 완전히 구분하기 때문에 개발자가 코드를 작성하는 동안 웹 디자이너는 태그로 디자인 작업을 진행 할 수 있다.
코드를 여러 페이지에 재 사용 할 수 있다.</p>
<hr>
<pre><code>&lt;html&gt;
&lt;body&gt;
...
&lt;/body&gt;
&lt;/html&gt;

.aspx 파일</code></pre><hr>
<pre><code>using System;
using System.Data;
...
public partial class Default_:page
{
 //내부로직
}</code></pre><p>코드 비하인드에서 한가지 짚고 넘어가야 할 것은 컨텐츠부인 *.aspx 파일과 코드부인 *.aspx.vb 혹은 *.aspx.cs 파일과의 관계이다. 짝으로 존재 하기 때문에 수평적인 관계라고 이해하겠지만, 실제는 <p style="color:olivedrab">.aspx파일은 *.aspx.vb나 *.aspx.cs로부터 클래스를 상속받는 수직적인 관계이다.</p></p>
<p><br><br></p>
<h3 id="웹폼의-주요-기술적인-내용">웹폼의 주요 기술적인 내용</h3>
<ul>
<li>웹폼은 서버상에서 동적으로 웹 페이지를 생성할 수 있는 프로그래밍 모델로서 제시된 ASP.NET프로그래밍 기술이다.</li>
<li>웹 폼은 어떠한 웹 브라우저에서도 실행 될 수 있으며, 자동으로 클라이어트의 타입을 판단해서 적절한 스타일과 레이아웃의 HTML 코드를 렌더링한다.</li>
<li>웹 폼은 Visual Basic.NET, C#, Managed C++, Jscript.NET 등 .NET프레임워크를 지원하는 모든 언어를 이용해서 개발될 수 있다.</li>
<li>웹 폼은 관리적 실행환경, 데이터 타입의 안정성, 상속 등과 같은 
<span style="color:red">.NET프레임워크의 모든 장점</span>을 제공한다.</li>
<li>Visual Studio.NET은 웹 폼을 디자인하고 프로그래밍하기 위한 최적의 RAD 개발 환경을 제공한다.</li>
<li>웹 개발에서 윈도 애플리케이션 개발처럼 서버 기반의 컨트롤들이 제공된다.</li>
<li>웹 폼은 사용자 정의 컨트롤(Custom Control)과 서드 파티 컨트롤을 이용해서 확장할 수 있다</li>
<li>하나의 서버코드 페이지는 여러개의 컨텐츠 페이지들과 서로 공유 될 수 있다.
<br><br></li>
</ul>
<h3 id="웹폼-이벤트의-주요-실행-순서">웹폼 이벤트의 주요 실행 순서</h3>
<h4 id="init-이벤트-→-loadview-state-이벤트-→-load-이벤트-→-서버-컨트롤-이벤트-→">Init 이벤트 → LoadView State 이벤트 → Load 이벤트 → 서버 컨트롤 이벤트 →</h4>
<h4 id="prerender-이벤트-→--savsviewstate-이벤트-→-unload-이벤트">PreRender 이벤트 →  SavsViewState 이벤트 → Unload 이벤트</h4>
<ol>
<li>Init 이벤트
웹 폼 페이지가 요청 되었을 때 처음 발생하는 이벤트로 서버 컨트롤들을 초기화 하는 역활을 담당</li>
<li>LoadView State 이벤트
서버 컨트롤의 정보를 가지고 있는 뷰 상태(View State)라는 것을 Load(복원) 하는 이벤트
LoadView State 이벤트를 기준으로 서버 컨트롤 사용 여부 구분</li>
<li>Load 이벤트
컨트롤의 초기화가 끝난 후 웹 폼 페이지와 서버 컨트롤들이 로드 될 때 발생하는 이벤트</li>
<li>서버 컨트롤 이벤트(ex. button 컨트롤의 click 이벤트)</li>
<li>PreRender 이벤트
웹 폼 페이지 내의 서버측 스크립트의 실행을 모두 마치고 page 클래스와 그 안의 포함된 자식 컨트롤들이 렌더링 되기 직전 발생</li>
<li>SaveView State 이벤트</li>
<li>Unload 이벤트
웹폼 페이지의 실행을 모두 마치고 페이지가 메모리에서 제거 될 때 발생</li>
</ol>
<blockquote>
<p>참고 <a href="https://only1004.tistory.com/6">https://only1004.tistory.com/6</a></p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[[개발] MVC 패턴?]]></title>
            <link>https://velog.io/@y-jin112/%EA%B0%9C%EB%B0%9C-MVC-%ED%8C%A8%ED%84%B4</link>
            <guid>https://velog.io/@y-jin112/%EA%B0%9C%EB%B0%9C-MVC-%ED%8C%A8%ED%84%B4</guid>
            <pubDate>Wed, 06 Jul 2022 07:01:38 GMT</pubDate>
            <description><![CDATA[<h2 id="mvc-패턴이란">MVC 패턴이란?</h2>
<p>MVC란 Model-View-Controller의 약자로 애플리케이션을 세가지 역할로 구분한 개발 방법론이다.
사용자가 Controller를 조작하면  Controller는 Model을 통해 데이터를 가져오고, 그 데이터를 바탕으로 View 를 통해 시각적 표현을 제어하여 사용자에게 전달하게 된다.</p>
<p>이러한 패턴을 성공적으로 사용하면, 사용자 인터페이스로부터 비즈니스 로직을 분리하여 애플리케이션의 시작적 요소나 그 이면에서 실행되는 비즈니스 로직을 서로 영향 없이 쉽게 고칠 수 있는 애플리케이션을 만들 수 있게 된다.</p>
<p></br></br></p>
<h3 id="controller"><strong>Controller</strong></h3>
<p>사용자가 접근 한 URL에 따라서 사용자의 요청사항을 파악한 후에 그 요청에 맞는 데이터를 Model에 의뢰하고, 데이터를 View에 반영해서 사용자에게 알려준다</p>
<p>모델에 명령을 보냄으로써 뷰의 상태를 변경할 수 있음 =&gt; (워드에서 문서 편집)
컨트롤러가 관련된 모델에 명령을 보냄으로써 뷰의 표시 방법을 바꿀 수 있음 =&gt; (문서를 스크롤 하는 것)</p>
<p><span style= color:green>컨트롤러의 규칙</span>
모델이나 뷰에 대해서 알고 있어야 함
모델이나 뷰의 변경을 모니터링 해야 함
<br></p>
<h3 id="model"><strong>Model</strong></h3>
<p>데이터를 가진 객체 모델.
데이터는 내부의 상태에 대한 정보를 가질 수도 있고, 모델을 표현하는 이름 속성으로 가질 수 있다. 모델의 상태에 변화가 있을 때 컨트롤러와 뷰에 이를 통보한다. 이와 같은 통보를 통해 뷰는 최신의 결과를 보여줄 수 있고, 컨트롤러는 모델의 변화에 따른 적용 가능한 명령을 추가, 제거, 수정할 수 있다.</p>
<p>일반적으로  Cl의 모델은 데이터베이스 테이블에 대응된다.
이를테면 Topic이라는 테이블은 topic_model이라는 Model을 만든다. 그런데 이 관계가 강제적이지 않기 때문에 규칙을 일관성 있게 정의하는 것이 필요하다</p>
<p><span style=color:green>모델의 규칙</span>
사용자가 편집하길 원하는 모든 데이터를 가지고 있어야만 한다
뷰나 컨트롤러에 대해서 어떠한 정보도 알지 말아야 함
변경이 일어나면 변경 통지에 대한 처리방법을 구현해야 한다
<br></p>
<h3 id="view"><strong>View</strong></h3>
<p>View는 클라이어트 측 기술인 html/css/javascript들을 모아둔 컨테이너이다
사용자가 볼 결과물을 생성하기 위해 모델로부터 정보를 얻어온다</p>
<p><span style=color:green>뷰의 규칙</span>
모델이 가지고 있는 정보를 따로 저장해서는 안됨
모델이나 컨트롤러와 같이 다른 구성 요소를 몰라야 한다
변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야 한다
<br></p>
<p><strong>Cl의 MVC 규칙</strong>
아래는 Cl에서 Controller과 Model과 View 간의 관계를 시각화 한 것이다.
<img src="https://velog.velcdn.com/images/y-jin112/post/74e8a4d4-5341-4140-803d-8b4a8f3e34d1/image.gif" alt=""></p>
<p></br></br></p>
<h3 id="✔️위의-개념을-web-에-적용시">✔️위의 개념을 web 에 적용시</h3>
<p>1.사용자가 웹사이트에 접속(user)
2.Controller는 사용자가 요청한 웹페이지를 서비스하기 위해서 모델을 호출(Manipulates)
3.Model은 데이터베이스나 파일과 같은 데이터 소스를 제어한 후 그 결과를 Return
4.Controller는 Model이 리턴한 결과를 View에 반영(Updates)
5.데이터가 반영된 View는 사용자에게 보여짐 (Sees)</p>
<h3 id="✔️mvc-패턴-방식">✔️MVC 패턴 방식</h3>
<p><strong>MVC 패턴에는 모델 1 방식과 모델 2 방식이 있다</strong>
모델 1 방식 : JSP에서 출력과 로직을 전부 처리
모델 2 방식 : JSP에서 출력만 처리</p>
<h3 id="✔️mvc-패턴을-사용해야-하는-이유">✔️MVC 패턴을 사용해야 하는 이유</h3>
<p>비즈니스 로직과 UI로직을 분리하여 유지보수를 독립적으로 수행 가능하다
Model과 View가 다른 컴포넌트들에 종속되지 않아 애플리케이션의 확장성, 유연성에 유리하다
중복 코딩의 문제점을 제거 할 수 있다.</p>
<h3 id="✔️mvc패턴-요약">✔️MVC패턴 요약</h3>
<p>Model - 백그라운드에서 동작하는 비즈니스 로직(데이터) 처리
View - 정보를 화면으로 보여주는 역할
Controller - 사용자의 입력 처리와 흐름 제어 담당. 화면과 Model과 Vie를 연결시켜주는 역할</p>
<p><br><br><br></p>
<blockquote>
<p> <em>참고자료</em>
<a href="https://opentutorials.org/course/697/3828">https://opentutorials.org/course/697/3828</a>
         <a href="https://cocoon1787.tistory.com/733">https://cocoon1787.tistory.com/733</a> </p>
</blockquote>
]]></description>
        </item>
        <item>
            <title><![CDATA[SQL Query문 정리]]></title>
            <link>https://velog.io/@y-jin112/SQL-Query%EB%AC%B8-%EC%A0%95%EB%A6%AC</link>
            <guid>https://velog.io/@y-jin112/SQL-Query%EB%AC%B8-%EC%A0%95%EB%A6%AC</guid>
            <pubDate>Wed, 06 Jul 2022 05:50:30 GMT</pubDate>
            <description><![CDATA[<p>기본 SQL Query문 정리 <span style="color:RED">SELECT, INSERT, UPDATE, DELETE</span></p>
<h1 id="1select">1.SELECT</h1>
<p>가장 기본인 데이터를 불러오는 쿼리문</p>
<blockquote>
<p><span style="color:slateblue">SELECT</span> 컬럼명 <span style="color:slateblue">FROM</span>  테이블명</p>
</blockquote>
<p>테이블명에 해당하는 테이블의 칼럼명에 데이터를 불러오는 구문</p>
<p>모든 칼럼을 불러오고 싶을 때는 컬럼 명 부분에 ‘ * ’ 넣으면 됨</p>
<blockquote>
<p><span style="color:slateblue">SELECT</span> 컬럼명 <span style="color:slateblue">FROM</span>  테이블명 <span style="color:slateblue">WHERE</span>  조건</p>
</blockquote>
<p>WHERE 구문을 추가해서 WHERE절 뒤에 오는 조건이 참인 데이터만 불러온다</p>
<p>[ 컬럼명 = 값 ] 으로 적을 경우 컬럼 </p>
<p>명의 값이 지정한 값인 데이터행의 데이터만 불러옴</p>
<blockquote>
<p><span style="color:slateblue">SELECT</span> 컬럼명 <span style="color:slateblue">FROM</span> 테이블명 <span style="color:slateblue">WHERE</span> 조건 <span style="color:slateblue">ORDER BY</span>  컬럼명  <span style="color:slateblue">ASC or DESC</span></p>
</blockquote>
<p>ORDER BY 뒤에 오는 칼럼명을 기준으로 대하여 불러오는 데이터를 정렬</p>
<p>ASC는 오름차순, DESC는 내림차순. 기본값은 오름차순으로 정렬</p>
<blockquote>
<p><span style="color:slateblue">SELECT</span> 컬럼명 <span style="color:slateblue">FROM</span> 테이블명 <span style="color:slateblue">WHERE</span> 조건 <span style="color:slateblue">ORDER BY</span> 컬럼명 <span style="color:slateblue">ASC or DESC</span> LIMIT 개수</p>
</blockquote>
<p>LIMIT 구문을 추가하여 데이터행이 많을 때에는 LIMIT절의 개수만큼 데이터를 불러온다</p>
<hr>
<h1 id="2-insert">2. INSERT</h1>
<p>데이터를 삽입하는 쿼리문</p>
<blockquote>
<p><span style="color:slateblue">INSERT INTO</span> 테이블명 (칼럼명1, 칼럼명2, 칼럼명3) <span style="color:slateblue">VALUES</span> (값1, 값2, 값3)</p>
</blockquote>
<p>테이블명에 있는 칼럼명에 순서에 맞게 값을 입력, 칼럼명과 값의 개수는 동일해야 함</p>
<p>만약에 문자열을 값으로 입력하는 경우에는 작은 따옴표로 문자열을 감싸줘야 함</p>
<p>ex. INSERT INTO Employees (Employee_id, First_name, Last_name) VALUES (100,’Aiden’,’Lee&#39;);</p>
<blockquote>
<p><span style="color:slateblue">INSERT INTO</span> 테이블명 <span style="color:slateblue">VALUES</span> (값1, 값2, 값3)</p>
</blockquote>
<p>테이블명 다음에 컬럼명을 입력하지 않은 경우이다. 이 경우에는 테이블에 모든 칼럼에 값을 입력한다는 의미로도 모든 칼럼의 수에 맞게 값을 줘야 함</p>
<p>ex. 칼럼이 Employee_id, First_name, Last_name 3개인 테이블에서</p>
<p>INSERT INTO Employees VALUE (100, ‘Aiden’); ⇒ 실패</p>
<p>INSERT INTO Employees VALUE (100, ‘Aiden’, ‘Lee’) ⇒ 성공</p>
<hr>
<h1 id="3update">3.UPDATE</h1>
<p>-데이터를 수정하는 쿼리문</p>
<blockquote>
<p><span style="color:slateblue">UPDATE</span> 테이블명 <span style="color:slateblue">SET</span> 칼럼명 = 변경할 값</p>
</blockquote>
<p>테이블에 있는 모든 데이터의 칼럼 값을 변경한다</p>
<blockquote>
<p><span style="color:slateblue">UPDATE</span> 테이블명 <span style="color:slateblue">SET</span> 칼럼명 = 변경할 값 <span style="color:slateblue">WHERE</span> 조건</p>
</blockquote>
<p>WHERE절에 조건에 해당하는 데이터만 변경</p>
<p>ex. WHERE 컬럼명 = 값</p>
<blockquote>
<p><span style="color:slateblue">UPDATE</span> 테이블명 <span style="color:slateblue">SET</span> 칼럼명1 = 변경할 값1, 칼럼명2 = 변경할 값2 <span style="color:slateblue">WHERE</span> 조건</p>
</blockquote>
<p>변경할 칼럼이 여러개일때 콤마( , )를 사용하여 여러개 값을 변경할 수 있다</p>
<hr>
<h1 id="4delete">4.DELETE</h1>
<p>-테이블에 데이터를 삭제하는 쿼리문</p>
<blockquote>
<p><span style="color:slateblue">DELETE</span> <span style="color:slateblue">FROM</span> 테이블명</p>
</blockquote>
<p>테이블에 있는 모든 데이터를 삭제</p>
<blockquote>
<p><span style="color:slateblue">DELETE</span> <span style="color:slateblue">FROM</span> 테이블명 <span style="color:slateblue">WHERE</span> 조건</p>
</blockquote>
<p>WHERE절에 조건에 합하는 데이터만 삭제</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[스파르타코딩 1주차 끝, 숙제]]></title>
            <link>https://velog.io/@y-jin112/%EC%8A%A4%ED%8C%8C%EB%A5%B4%ED%83%80%EC%BD%94%EB%94%A9-1%EC%A3%BC%EC%B0%A8-%EB%81%9D-%EC%88%99%EC%A0%9C</link>
            <guid>https://velog.io/@y-jin112/%EC%8A%A4%ED%8C%8C%EB%A5%B4%ED%83%80%EC%BD%94%EB%94%A9-1%EC%A3%BC%EC%B0%A8-%EB%81%9D-%EC%88%99%EC%A0%9C</guid>
            <pubDate>Thu, 30 Jun 2022 14:33:05 GMT</pubDate>
            <description><![CDATA[<p><img src="https://velog.velcdn.com/images/y-jin112/post/48afaaf9-7046-4ac8-998f-e06f9b4ff11f/image.jpg" alt="">
⬆ 이것이 1주차 끝나는겸 과제..</p>
</br>
</br>
</br>

<h2 id="1주차까지-마친-후기">1주차까지 마친 후기</h2>
<p>비개발자를 위한, 웹개발 종합반 (프로그래밍 실무, 풀스택)1주차를 끝냈다. 
처음엔 취업하기전에 심심해서 국비지원 강의를 신청하였는데
스파르타 코딩 시작하는 전주에 취업을 해버려서 복습겸 강의를 듣고있다.
이번 1주차에서는 아주 기본적인 html 구조와 설명, JS 기본기다지기,부트스트랩을 이용해 영화 사이트 만들기 등을 하였다.
<img src="https://velog.velcdn.com/images/y-jin112/post/d61bcbe7-7403-4050-8a48-27689880b39b/image.jpg" alt=""></p>
<p>글을 저장하고, 삭제하는 그런 기능은 없다. 그냥 기본적인 틀만 만드는 형식으로 수업이 끝났다.
bootstrap을 이용하니까 이렇게 빨리.. 그리고 편하게 사이트를 만들다니.. 
나는 하드코딩으로 내가 다 만들었었는데.. 너무 편했다 복붙 복붙하니까 사이트가 만들어졌다😬</p>
<p>느낀점은.. 하루에 강의를 8개밖에 못듣는데~ 더 많이 듣고 싶다 !! 
작업물을 빨리 빨리 내고싶은 나의 욕심..ㅎㅎ
강사샘 시원시원하고 재밌으시고, 알아 듣기 쉽게 설명해주셔서 좋았음.
다만 가끔씩 녹화하는 강의실이 달라지는지 소리가 엄청 울릴때도 있었다. 1주차 숙제 내주실때였던가
국비지원 인터넷강의 들으실분들 강추..</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Javascript 연습하기]]></title>
            <link>https://velog.io/@y-jin112/Javascript-%EC%97%B0%EC%8A%B5%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@y-jin112/Javascript-%EC%97%B0%EC%8A%B5%ED%95%98%EA%B8%B0</guid>
            <pubDate>Wed, 29 Jun 2022 09:13:57 GMT</pubDate>
            <description><![CDATA[<h4 id="미세먼지idex_mvl의-값이-40-미만인-구-이름msrste_nm과-값을-출력하기">미세먼지(IDEX_MVL)의 값이 40 미만인 구 이름(MSRSTE_NM)과 값을 출력하기</h4>
<pre><code>let mise_list = [
  {
    MSRDT: &quot;201912052100&quot;,
    MSRRGN_NM: &quot;도심권&quot;,
    MSRSTE_NM: &quot;중구&quot;,
    PM10: 22,
    PM25: 14,
    O3: 0.018,
    NO2: 0.015,
    CO: 0.4,
    SO2: 0.002,
    IDEX_NM: &quot;좋음&quot;,
    IDEX_MVL: 31,
    ARPLT_MAIN: &quot;O3&quot;,
  },
  {
    MSRDT: &quot;201912052100&quot;,
    MSRRGN_NM: &quot;도심권&quot;,
    MSRSTE_NM: &quot;종로구&quot;,
    PM10: 24,
    PM25: 18,
    O3: 0.013,
    NO2: 0.016,
    CO: 0.4,
    SO2: 0.003,
    IDEX_NM: &quot;좋음&quot;,
    IDEX_MVL: 39,
    ARPLT_MAIN: &quot;PM25&quot;,
  },
  {
    MSRDT: &quot;201912052100&quot;,
    MSRRGN_NM: &quot;도심권&quot;,
    MSRSTE_NM: &quot;용산구&quot;,
    PM10: 0,
    PM25: 15,
    O3: 0.012,
    NO2: 0.027,
    CO: 0.4,
    SO2: 0.003,
    IDEX_NM: &quot;점검중&quot;,
    IDEX_MVL: -99,
    ARPLT_MAIN: &quot;점검중&quot;,
  },
  {
    MSRDT: &quot;201912052100&quot;,
    MSRRGN_NM: &quot;서북권&quot;,
    MSRSTE_NM: &quot;은평구&quot;,
    PM10: 36,
    PM25: 14,
    O3: 0.019,
    NO2: 0.018,
    CO: 0.5,
    SO2: 0.005,
    IDEX_NM: &quot;좋음&quot;,
    IDEX_MVL: 42,
    ARPLT_MAIN: &quot;PM10&quot;,
  },
  {
    MSRDT: &quot;201912052100&quot;,
    MSRRGN_NM: &quot;서북권&quot;,
    MSRSTE_NM: &quot;서대문구&quot;,
    PM10: 28,
    PM25: 9,
    O3: 0.018,
    NO2: 0.015,
    CO: 0.6,
    SO2: 0.004,
    IDEX_NM: &quot;좋음&quot;,
    IDEX_MVL: 37,
    ARPLT_MAIN: &quot;PM10&quot;,
  },
  {
    MSRDT: &quot;201912052100&quot;,
    MSRRGN_NM: &quot;서북권&quot;,
    MSRSTE_NM: &quot;마포구&quot;,
    PM10: 26,
    PM25: 8,
    O3: 0.012,
    NO2: 0.021,
    CO: 0.5,
    SO2: 0.003,
    IDEX_NM: &quot;좋음&quot;,
    IDEX_MVL: 36,
    ARPLT_MAIN: &quot;NO2&quot;,
  },
  {
    MSRDT: &quot;201912052100&quot;,
    MSRRGN_NM: &quot;동북권&quot;,
    MSRSTE_NM: &quot;광진구&quot;,
    PM10: 17,
    PM25: 9,
    O3: 0.018,
    NO2: 0.016,
    CO: 0.6,
    SO2: 0.001,
    IDEX_NM: &quot;좋음&quot;,
    IDEX_MVL: 31,
    ARPLT_MAIN: &quot;O3&quot;,
  },
  {
    MSRDT: &quot;201912052100&quot;,
    MSRRGN_NM: &quot;동북권&quot;,
    MSRSTE_NM: &quot;성동구&quot;,
    PM10: 21,
    PM25: 12,
    O3: 0.018,
    NO2: 0.017,
    CO: 0.4,
    SO2: 0.003,
    IDEX_NM: &quot;좋음&quot;,
    IDEX_MVL: 33,
    ARPLT_MAIN: &quot;PM25&quot;,
  },
  {
    MSRDT: &quot;201912052100&quot;,
    MSRRGN_NM: &quot;동북권&quot;,
    MSRSTE_NM: &quot;중랑구&quot;,
    PM10: 27,
    PM25: 10,
    O3: 0.015,
    NO2: 0.019,
    CO: 0.4,
    SO2: 0.003,
    IDEX_NM: &quot;좋음&quot;,
    IDEX_MVL: 34,
    ARPLT_MAIN: &quot;PM10&quot;,
  },
  {
    MSRDT: &quot;201912052100&quot;,
    MSRRGN_NM: &quot;동북권&quot;,
    MSRSTE_NM: &quot;동대문구&quot;,
    PM10: 26,
    PM25: 9,
    O3: 0.016,
    NO2: 0.017,
    CO: 0.4,
    SO2: 0.003,
    IDEX_NM: &quot;좋음&quot;,
    IDEX_MVL: 34,
    ARPLT_MAIN: &quot;PM10&quot;,
  },
  {
    MSRDT: &quot;201912052100&quot;,
    MSRRGN_NM: &quot;동북권&quot;,
    MSRSTE_NM: &quot;성북구&quot;,
    PM10: 27,
    PM25: 8,
    O3: 0.022,
    NO2: 0.014,
    CO: 0.5,
    SO2: 0.003,
    IDEX_NM: &quot;좋음&quot;,
    IDEX_MVL: 37,
    ARPLT_MAIN: &quot;PM10&quot;,
  },
  {
    MSRDT: &quot;201912052100&quot;,
    MSRRGN_NM: &quot;동북권&quot;,
    MSRSTE_NM: &quot;도봉구&quot;,
    PM10: 25,
    PM25: 12,
    O3: 0.024,
    NO2: 0.011,
    CO: 0.3,
    SO2: 0.002,
    IDEX_NM: &quot;좋음&quot;,
    IDEX_MVL: 41,
    ARPLT_MAIN: &quot;O3&quot;,
  },
  {
    MSRDT: &quot;201912052100&quot;,
    MSRRGN_NM: &quot;동북권&quot;,
    MSRSTE_NM: &quot;강북구&quot;,
    PM10: 30,
    PM25: 15,
    O3: 0.022,
    NO2: 0.02,
    CO: 0.4,
    SO2: 0.002,
    IDEX_NM: &quot;좋음&quot;,
    IDEX_MVL: 39,
    ARPLT_MAIN: &quot;PM10&quot;,
  },
  {
    MSRDT: &quot;201912052100&quot;,
    MSRRGN_NM: &quot;동북권&quot;,
    MSRSTE_NM: &quot;노원구&quot;,
    PM10: 21,
    PM25: 14,
    O3: 0.017,
    NO2: 0.016,
    CO: 0.4,
    SO2: 0.004,
    IDEX_NM: &quot;좋음&quot;,
    IDEX_MVL: 36,
    ARPLT_MAIN: &quot;PM25&quot;,
  },
  {
    MSRDT: &quot;201912052100&quot;,
    MSRRGN_NM: &quot;서남권&quot;,
    MSRSTE_NM: &quot;강서구&quot;,
    PM10: 36,
    PM25: 16,
    O3: 0.021,
    NO2: 0.013,
    CO: 0.4,
    SO2: 0.004,
    IDEX_NM: &quot;좋음&quot;,
    IDEX_MVL: 42,
    ARPLT_MAIN: &quot;PM10&quot;,
  },
  {
    MSRDT: &quot;201912052100&quot;,
    MSRRGN_NM: &quot;서남권&quot;,
    MSRSTE_NM: &quot;구로구&quot;,
    PM10: 23,
    PM25: 10,
    O3: 0.022,
    NO2: 0.016,
    CO: 0.3,
    SO2: 0.003,
    IDEX_NM: &quot;좋음&quot;,
    IDEX_MVL: 37,
    ARPLT_MAIN: &quot;O3&quot;,
  },
  {
    MSRDT: &quot;201912052100&quot;,
    MSRRGN_NM: &quot;서남권&quot;,
    MSRSTE_NM: &quot;영등포구&quot;,
    PM10: 29,
    PM25: 15,
    O3: 0.01,
    NO2: 0.022,
    CO: 0.4,
    SO2: 0.003,
    IDEX_NM: &quot;좋음&quot;,
    IDEX_MVL: 41,
    ARPLT_MAIN: &quot;PM10&quot;,
  },
  {
    MSRDT: &quot;201912052100&quot;,
    MSRRGN_NM: &quot;서남권&quot;,
    MSRSTE_NM: &quot;동작구&quot;,
    PM10: 29,
    PM25: 15,
    O3: 0.012,
    NO2: 0.023,
    CO: 0.4,
    SO2: 0.003,
    IDEX_NM: &quot;좋음&quot;,
    IDEX_MVL: 41,
    ARPLT_MAIN: &quot;PM10&quot;,
  },
  {
    MSRDT: &quot;201912052100&quot;,
    MSRRGN_NM: &quot;서남권&quot;,
    MSRSTE_NM: &quot;관악구&quot;,
    PM10: 27,
    PM25: 12,
    O3: 0.012,
    NO2: 0.022,
    CO: 0.4,
    SO2: 0.003,
    IDEX_NM: &quot;좋음&quot;,
    IDEX_MVL: 37,
    ARPLT_MAIN: &quot;NO2&quot;,
  },
  {
    MSRDT: &quot;201912052100&quot;,
    MSRRGN_NM: &quot;서남권&quot;,
    MSRSTE_NM: &quot;금천구&quot;,
    PM10: 25,
    PM25: 15,
    O3: 0.015,
    NO2: 0.02,
    CO: 0.4,
    SO2: 0.004,
    IDEX_NM: &quot;좋음&quot;,
    IDEX_MVL: 43,
    ARPLT_MAIN: &quot;PM25&quot;,
  },
  {
    MSRDT: &quot;201912052100&quot;,
    MSRRGN_NM: &quot;서남권&quot;,
    MSRSTE_NM: &quot;양천구&quot;,
    PM10: 0,
    PM25: 14,
    O3: 0.016,
    NO2: 0.017,
    CO: 0.4,
    SO2: 0.003,
    IDEX_NM: &quot;점검중&quot;,
    IDEX_MVL: -99,
    ARPLT_MAIN: &quot;점검중&quot;,
  },
  {
    MSRDT: &quot;201912052100&quot;,
    MSRRGN_NM: &quot;동남권&quot;,
    MSRSTE_NM: &quot;강남구&quot;,
    PM10: 31,
    PM25: 16,
    O3: 0.018,
    NO2: 0.018,
    CO: 0.4,
    SO2: 0.003,
    IDEX_NM: &quot;좋음&quot;,
    IDEX_MVL: 39,
    ARPLT_MAIN: &quot;PM10&quot;,
  },
  {
    MSRDT: &quot;201912052100&quot;,
    MSRRGN_NM: &quot;동남권&quot;,
    MSRSTE_NM: &quot;서초구&quot;,
    PM10: 34,
    PM25: 13,
    O3: 0.024,
    NO2: 0.019,
    CO: 0.3,
    SO2: 0.003,
    IDEX_NM: &quot;좋음&quot;,
    IDEX_MVL: 41,
    ARPLT_MAIN: &quot;PM10&quot;,
  },
  {
    MSRDT: &quot;201912052100&quot;,
    MSRRGN_NM: &quot;동남권&quot;,
    MSRSTE_NM: &quot;송파구&quot;,
    PM10: 25,
    PM25: 6,
    O3: 0.014,
    NO2: 0.025,
    CO: 0.4,
    SO2: 0.003,
    IDEX_NM: &quot;좋음&quot;,
    IDEX_MVL: 42,
    ARPLT_MAIN: &quot;NO2&quot;,
  },
  {
    MSRDT: &quot;201912052100&quot;,
    MSRRGN_NM: &quot;동남권&quot;,
    MSRSTE_NM: &quot;강동구&quot;,
    PM10: 24,
    PM25: 14,
    O3: 0.016,
    NO2: 0.02,
    CO: 0.4,
    SO2: 0.002,
    IDEX_NM: &quot;좋음&quot;,
    IDEX_MVL: 39,
    ARPLT_MAIN: &quot;PM25&quot;,
  },
];

for (let i = 0; i &lt; mise_list.length; i++) {
    console.log(mise_list[i])
    📍모든 값을 다 불러옴
}

for (let i = 0; i &lt; mise_list.length; i++) {
    if (mise_list[i] [&#39;IDEX_MVL&#39;] &lt; 40){
        console.log(mise_list[i][&#39;MSRSTE_NM&#39;])
    }
    📍mise_list 값들 중 IDEX_MVL수치가 40 아래일경우, 콘솔창에     MSRSTE_NM 를 띄움(지역구 이름)
}</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[Javascript 기초 문법 배우기]]></title>
            <link>https://velog.io/@y-jin112/Javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EB%B2%95-%EB%B0%B0%EC%9A%B0%EA%B8%B0</link>
            <guid>https://velog.io/@y-jin112/Javascript-%EA%B8%B0%EC%B4%88-%EB%AC%B8%EB%B2%95-%EB%B0%B0%EC%9A%B0%EA%B8%B0</guid>
            <pubDate>Wed, 29 Jun 2022 09:03:51 GMT</pubDate>
            <description><![CDATA[<p>변수  : 값을 담는것
자료형 : 숫자인지 문자인지
함수 : 함수는 작업을 수행하거나 값을 계산하는 문장 집합 같은 자바스크립트 절차이다.
함수를 사용하려면 함수를 호출하고자 하는 범위 내에서 함수를 정의해야만 함
조건문 : if() else()
반복문 : 계속 반복되는것</p>
<h4 id="자료형">자료형</h4>
<pre><code>let firt_name = &#39;dubn&#39;
let last_name = &#39;Kim&#39;
first_name+last_name = &#39;dubuKim&#39;

let a_list = [&#39;수박&#39;,&#39;참외&#39;,&#39;배&#39;]
a_list[1] = &#39;참외&#39;
a_list.push(&#39;감&#39;)
4
a_list = [&#39;수박&#39;,&#39;참외&#39;,&#39;배&#39;,&#39;감&#39;]


let b_list = [&#39;철수&#39;,&#39;영희&#39;]
a_list.push(b_list)
5
a_list
[&#39;수박&#39;,&#39;참외&#39;,&#39;배&#39;,&#39;감&#39;, Array(2)]
a_list[4][0]
&#39;철수&#39;
a_list[4][1]
&#39;영희&#39;

let a_dict = {&#39;name&#39;:&#39;bob&#39;,&#39;age&#39;:27}
a_dict = [&#39;name&#39;] ➡ &#39;bob&#39;
a_dict[&#39;height&#39;] = 180
a_dict ➡ {&#39;name&#39;:&#39;bob&#39;,&#39;age&#39;:27, &#39;height&#39;:180}</code></pre><p>📣 <strong>자료형</strong>은 숫자가 중요한 list , key value로 이루어진 나이는 &#39;27&#39; 으로 이루어진 자료구조이다.</p>
<pre><code>let myemail = &#39;emailID@kakao.com&#39;
myemail.split(&#39;@&#39;)
⬆ 이메일만 취하고싶다

[&#39;robins2424&#39;,&#39;kakao.com&#39;]
myemail.split(&#39;@&#39;)[1]
&#39;kakao.com&#39;

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

myemail.split(&#39;@&#39;)[1].split(&#39;.&#39;)[0]
&#39;kakao&#39;
</code></pre><h4 id="함수형">함수형</h4>
<pre><code>function sum(a,b){
    alert(a+b)
}
sum(2,3)
알림창 &quot;5&quot; 출력

function sum(a,b){
    alert(&#39;계산을 하자&#39;)
    return a+b
}
let result = sum(2,3)
alert(result)
알림창 &quot;계산을하자&quot; 출력 ➡ &quot;5&quot; 출력

}
</code></pre><h4 id="if문">if문</h4>
<pre><code>function is_adult(age){
    if(age &gt; 20){
        alert(&#39;성인입니다&#39;)
    }else{
        alert(&#39;청소년입니다&#39;)
    }</code></pre><p>is_adult(20) ➡ 청소년입니다
is_adult(25) ➡ 성인입니다</p>
<h4 id="반복문">반복문</h4>
<pre><code>let a_list = [&#39;사과&#39;,&#39;배&#39;,&#39;감&#39;,&#39;딸기&#39;]
for(let i = 0; i &lt; a_list.length; i++){
    console.log(a_list[i])
➡ i가 0부터 하나씩 커지면서 돌면서 내용물을 실행 a_list.length까지
  a_list[0],a_list[1],a_list[2],a_list[3]
}</code></pre><pre><code>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},
]

for(let i = 0; i &lt; scores.length; i++){
    console.log(scores[i])
    📍모든 값을 다 가져오기 
    {&#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},
}

for(let i = 0; i &lt; scores.length; i++){
    console.log(scores[i][&#39;score&#39;])
    📍스코어만 찍기
    (90,85,70,50,68,30)
}

for(let i = 0; i &lt; scores.length; i++){
    if (scores[i][&#39;score&#39;] &gt; 70){
        console.log(scores[i][&#39;name&#39;]
    }
    📍스코어 중 70점 넘는 사람 이름으로 출력
    (철수, 영희)
}</code></pre>]]></description>
        </item>
        <item>
            <title><![CDATA[스파르타코딩클럽 - 나만의 프로필 링크 페이지 만들기]]></title>
            <link>https://velog.io/@y-jin112/%EC%8A%A4%ED%8C%8C%EB%A5%B4%ED%83%80%EC%BD%94%EB%94%A9%ED%81%B4%EB%9F%BD-%EB%82%98%EB%A7%8C%EC%9D%98-%ED%94%84%EB%A1%9C%ED%95%84-%EB%A7%81%ED%81%AC-%ED%8E%98%EC%9D%B4%EC%A7%80-%EB%A7%8C%EB%93%A4%EA%B8%B0</link>
            <guid>https://velog.io/@y-jin112/%EC%8A%A4%ED%8C%8C%EB%A5%B4%ED%83%80%EC%BD%94%EB%94%A9%ED%81%B4%EB%9F%BD-%EB%82%98%EB%A7%8C%EC%9D%98-%ED%94%84%EB%A1%9C%ED%95%84-%EB%A7%81%ED%81%AC-%ED%8E%98%EC%9D%B4%EC%A7%80-%EB%A7%8C%EB%93%A4%EA%B8%B0</guid>
            <pubDate>Thu, 23 Jun 2022 09:01:54 GMT</pubDate>
            <description><![CDATA[<h2 id="시작하기에앞서">시작하기에앞서</h2>
<p>15분도 안돼는 분량인데, 귀여운 미니 프로필 링크 페이지를 만들수 있다.
강의내용도 쉽고 깃허브에 올리는 방법까지 알려준다.</p>
<h2 id="완성본">완성본</h2>
<p><img src="https://velog.velcdn.com/images/y-jin112/post/2a81bebe-ab13-4719-8219-eb706d623f16/image.jpg" alt=""></p>
<h2 id="강의를-들으며-헤맸던-부분">강의를 들으며 헤맸던 부분</h2>
<p>없었다. 응용해서 색도 바꾸고, 버튼 hover시 .2초 뒤에 색깔이 바뀌게끔도 해봤다,, 
무궁무진한 프론트의 세계! 재밌다 재밌어!!! </p>
<h2 id="강의를-하고-난-후-총-평">강의를 하고 난 후 총 평</h2>
<p>난이도가 낮아서 누구든 할 수있음!</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[스파르타코딩클럽  - 추억소환 코딩 패키지(kakao map WEB API)]]></title>
            <link>https://velog.io/@y-jin112/%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%B6%94%EC%96%B5%EC%86%8C%ED%99%98%EC%BD%94%EB%94%A9%ED%8C%A8%ED%82%A4%EC%A7%80</link>
            <guid>https://velog.io/@y-jin112/%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%B6%94%EC%96%B5%EC%86%8C%ED%99%98%EC%BD%94%EB%94%A9%ED%8C%A8%ED%82%A4%EC%A7%80</guid>
            <pubDate>Mon, 20 Jun 2022 08:39:31 GMT</pubDate>
            <description><![CDATA[<h2 id="시작하기에-앞서">시작하기에 앞서</h2>
<p>무료강의를 물색하던중..
스파르타 코딩클럽에서 추억소환 코딩 패키지가 무료로 풀렸길래
1시간도 안돼는 분량으로 결과물을 낼 수 있어서, 재밌겠다싶어 강의를 시작하였다.</p>
<h2 id="완성본">완성본</h2>
<p><img src="https://velog.velcdn.com/images/y-jin112/post/93f2d508-44ab-4a7d-820a-f9b7629ed9fb/image.jpg" alt=""></p>
<br>

<h2 id="강의를-들으며-헤맸던-부분">강의를 들으며 헤맸던 부분</h2>
<p>무료강의라 그런지 세세하게 설명은 없었으므로 초심자가 듣기에는 조금 불친절 할수도 있다. 강사님이 하라는대로 했을때는 강사님의 지역 지도가 잘 그려져서 나오는데 내가 원하는 지역 지도를 가져오려고 하니 빈화면이 출력됐었다. (하얀 화면)
너무 쉬운 과정인데 안돼니 답답했다. 몇시간의 구글링 끝에 해결했다.</p>
<p><br><br></p>
<h2 id="지도가져올때-빈화면-해결하기">지도가져올때 빈화면 해결하기</h2>
<h3 id="kakao-app-key-발급-후-사이트-도메인을-등록-할-때-내-로컬-주소가-아닌-다른-로컬-주소로-도메인등록-했었음">kakao APP KEY 발급 후 사이트 도메인을 등록 할 때 내 로컬 주소가 아닌 다른 로컬 주소로 도메인등록 했었음</h3>
<p><img src="https://velog.velcdn.com/images/y-jin112/post/8625c261-9260-460a-a2f8-cd4d1cb0407b/image.jpg" alt="">
<img src="https://velog.velcdn.com/images/y-jin112/post/f4146a5f-a008-45ed-a589-57cb70e4b210/image.jpg" alt=""></p>
<p>이렇게 index.html을 제외한 후 로컬 주소를 입력해줘야함.
<br><br></p>
<h3 id="위치-좌표를-입력할-때-y-x순으로-입력을-해줘야한다">위치 좌표를 입력할 때 y, x순으로 입력을 해줘야한다</h3>
<p><img src="https://velog.velcdn.com/images/y-jin112/post/a4bef709-154c-4246-9f65-272d6b77a471/image.jpg" alt="">x, y 순으로 입력해서 없는 좌표를 적으니 빈화면이 출력됐었다. (하얀화면)
좌표를 입력 할 때는 y,x 순으로 기입한다.</p>
<p><br><br></p>
<h2 id="강의를-받고-난-후-총-평">강의를 받고 난 후 총 평</h2>
<p>나한테는 전체적으로 어렵지 않은 난이도였다.
카카오 WEB API:API KEY를 가져오는 부분도 세세하게 다뤘으면 좋았을것같다.</p>
<blockquote>
<p>주소를 좌표로 변환하기
<a href="https://map.yjhoon.com/naver/">https://map.yjhoon.com/naver/</a></p>
</blockquote>
]]></description>
        </item>
    </channel>
</rss>