<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>코딩 기술자료</title>
    <link>https://oldboy79.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Mon, 13 Apr 2026 23:07:29 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>꿈꾸는만학도</managingEditor>
    <item>
      <title>decorator</title>
      <link>https://oldboy79.tistory.com/20</link>
      <description>&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style14&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;1. 정의&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #656565; text-align: start;&quot;&gt;@staticmethod&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #656565; text-align: start;&quot;&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #656565; text-align: start;&quot;&gt;@classmethod&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #656565; text-align: start;&quot;&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #656565; text-align: start;&quot;&gt;@abstractmethod 처럼 함수의 시작부분 앞에 @표시를 하는것을 데코레이터라고 부른다. 이는 함수를 직접 수정하지 않고 함수 앞뒤에 기능을 추가해서 함수를 활용하는 방법이라 생각하면 된다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style14&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;2. 인자가 없는 경우 데코레이터&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #656565; text-align: start;&quot;&gt;예시를 보자. 다음 예시는 파이썬 코딩 도장에서 발췌한것임을 알려드린다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;yui_3_17_2_1_1698783578866_41&quot; class=&quot;pgsql&quot; style=&quot;background-color: #f5f5f5; color: #333333; text-align: start;&quot;&gt;&lt;code&gt;def trace(func):&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;# 호출할 함수를 매개변수로 받음
&amp;nbsp;&amp;nbsp;&amp;nbsp; def wrapper():
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print(func.__name__, '함수 시작')&amp;nbsp;&amp;nbsp;&amp;nbsp; # __name__으로 함수 이름 출력
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; func()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 매개변수로 받은 함수를 호출
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print(func.__name__, '함수 끝')
&amp;nbsp;&amp;nbsp;&amp;nbsp; return wrapper&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # wrapper 함수 반환
&amp;nbsp;
@trace&amp;nbsp;&amp;nbsp;&amp;nbsp; # @데코레이터
def hello():
&amp;nbsp;&amp;nbsp;&amp;nbsp; print('hello')
&amp;nbsp;
@trace&amp;nbsp;&amp;nbsp;&amp;nbsp; # @데코레이터
def world():
&amp;nbsp;&amp;nbsp;&amp;nbsp; print('world')
&amp;nbsp;
hello()&amp;nbsp;&amp;nbsp;&amp;nbsp; # 함수를 그대로 호출
world()&amp;nbsp;&amp;nbsp;&amp;nbsp; # 함수를 그대로 호출&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;@를 사용하지 않을떄는 다음과 같이 써야 하는 것이다.&lt;/p&gt;
&lt;pre class=&quot;gauss&quot; style=&quot;background-color: #f5f5f5; color: #333333; text-align: start;&quot;&gt;&lt;code&gt;trace_hello = trace(hello)&amp;nbsp;&amp;nbsp;&amp;nbsp; # 데코레이터에 호출할 함수를 넣음
trace_hello()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 반환된 함수를 호출
trace_world = trace(world)&amp;nbsp;&amp;nbsp;&amp;nbsp; # 데코레이터에 호출할 함수를 넣음
trace_world()&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; # 반환된 함수를 호출&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데코레이터도 기본은 중복코드 방지이다. 간편하게 사용할 수 있는 장점이 있다. 얼마나 간편한가...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과는 다음과 같다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;yui_3_17_2_1_1698783578866_44&quot; class=&quot;properties&quot; style=&quot;background-color: #f5f5f5; color: #333333; text-align: start;&quot;&gt;&lt;code&gt;hello 함수 시작
hello
hello 함수 끝
world 함수 시작
world
world 함수 끝&lt;/code&gt;&lt;/pre&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style14&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;3. 인자가 있는 경우의 데코레이터&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;pre id=&quot;code_1699166421437&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def div_out(function):
    def div_in(digit1, digit2):
        if digit2 == 0:
            print('cannot be divided with zero')
            return
        function(digit1, digit2)

    return div_in


@div_out
def divide(digit1, digit2):
    print(digit1 / digit2)


divide(4, 0)

==&amp;gt; caanot be divided with zero&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1f22; color: #bcbec4;&quot;&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style14&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;4. 파라미터 제한 없는 decorator&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;pre id=&quot;code_1699131492559&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def general(function):
    def wrapper(*args, **kwargs):
        print('this is general decorator')
        return function(*args, **kwargs)
    return wrapper
    
 
@general
def calc_squre(digit):
    return digit * digit

@general
def cal_plus(digit1, digit2):
    return digit1 + digit2

@general
def cal_quad(digit1, digit2, digit3, digit4):
    return digit1 * digit2 * digit3 * digit4
    


print (calc_squre(2))
this is general decorator
4

print(cal_plus(2, 3))
this is general decorator
5

print(cal_quad(1, 2, 3, 4))
this is general decorator
24&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style14&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;5. 여러 데코레이터 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1699165955204&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def decorator1(function):
    def wrapper():
        print('decorator 1번입니다.')
        function()
    return wrapper

def decorator2(function):
    def wrapper():
        print('decorator 2번입니다.')
        function()
    return wrapper
    
    
    
    
@decorator1
@decorator2
def test():
    print('이것은 test deco입니까?')
    
    
test()
decorator 1번입니다.
decorator 2번입니다.
이것은 test deco입니까&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Develop Story/python</category>
      <category>Decorator</category>
      <author>꿈꾸는만학도</author>
      <guid isPermaLink="true">https://oldboy79.tistory.com/20</guid>
      <comments>https://oldboy79.tistory.com/20#entry20comment</comments>
      <pubDate>Sun, 5 Nov 2023 15:32:53 +0900</pubDate>
    </item>
    <item>
      <title>closure</title>
      <link>https://oldboy79.tistory.com/19</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;함수를 둘러싼 환경(지역변수, 코드등)을 계속 유지하다가 함수를 호출할 때 다시 꺼내서 사용하는 함수를 클로저(closure)라고 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예시를 보자.&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1f22; color: #bcbec4;&quot;&gt;
&lt;pre class=&quot;python&quot;&gt;&lt;code&gt;def calc():
    a = 3
    b = 5
    def mul_add(x):
        return a *  x + b
    return mul_add



if __name__ == '__main__':
    c = calc()
    print(c(1), c(2), c(3), c(4), c(5))&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에 예시에서 c에 저장된 함수가 클로저이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 예시를 하나 더 보자..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1698723530421&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def mul(m):
    def wrapper(n):
        return m * n
    return wrapper


if __name__ == &quot;__main__&quot;:
    mul3 = mul(3)
    mul5 = mul(5)

    print(mul3(10))  # 30 출력
    print(mul5(10))  # 50 출력&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위에서 mul 함수가 바로 클로저 인 것이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 정리해보면 함수와 해당 함수가 가지고 있는 데이터를 함께 복사, 저장해서 별도 함수로 활용하는 방법으로 외부함수가 소멸되더라도, 외부 함수 안에 있는 로컬 변수 값과 중첩함수를 사용할수 있는 것을 클로저라 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;del mul로 위의 함수를 지운다해도 mul3, mul5함수는 그대로 살아 있음&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 mul3(10), mul5(10)은 사용할수가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 한가지 예시를 더 보자.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;background-color: #1e1f22; color: #bcbec4;&quot;&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;def power_cal(num):
    def power(digit):
        return digit ** num
    return power


if __name__ == '__main__':
    list_data = list()

    for number in range(1, 6):
        list_data.append(power_cal(number))

    for function in list_data:
        print(function(2))


&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Develop Story/python</category>
      <author>꿈꾸는만학도</author>
      <guid isPermaLink="true">https://oldboy79.tistory.com/19</guid>
      <comments>https://oldboy79.tistory.com/19#entry19comment</comments>
      <pubDate>Tue, 31 Oct 2023 14:09:33 +0900</pubDate>
    </item>
    <item>
      <title>First class function</title>
      <link>https://oldboy79.tistory.com/18</link>
      <description>&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style14&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;1. definition&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #374151; letter-spacing: 0px;&quot;&gt;It means a function that can be passed as an argument to another function, returned as a result of another function, or assigned to a variable or stored in a data structure.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt; &lt;span style=&quot;text-align: start;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; text-align: start;&quot;&gt;함수 자체를 인자 (argument) 로써 다른 함수에 전달하거나 다른 함수의 결과값으로 리턴 할수도 있고, 함수를 변수에 할당하거나 데이터 구조안에 저장할 수 있는 함수를 뜻한다.&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #494949; text-align: start;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 1. assign to a variable&lt;/p&gt;
&lt;pre id=&quot;code_1698646591043&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def add(digit):
    return digit + digit


def minus(digit):
    return 10 - digit


def multiple(digit):
    return digit * digit


def divide(digit):
    return 20 / digit


def condition(function, digit_list):
    result = list()
    for digit in digit_list:
        result.append(function(digit))
    print(result)


if __name__ == '__main__':
    int_list = [1, 2, 3, 4, 5]
    condition(add, int_list)
    condition(minus, int_list)
    condition(multiple, int_list)
    condition(divide, int_list)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. return as a result of another function&lt;/p&gt;
&lt;pre id=&quot;code_1698647168086&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def login_info(message):
    msg = message

    def msg_info():
        print(&quot;[현재]&quot;, msg)

    return msg_info


if __name__ == '__main__':
    user = login_info('user1 login')

    user()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. application&lt;/p&gt;
&lt;pre id=&quot;code_1698708630151&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def html_creator(tag):
    def text_wrapper(msg):
        print('&amp;lt;{0}&amp;gt;{1}&amp;lt;/{0}&amp;gt;'.format(tag, msg))

    return text_wrapper


if __name__ == '__main__':
    h1_html_creator = html_creator('h1')
    print(h1_html_creator)

    h1_html_creator('h1 태그는 타이틀을 표시하는 태그입니다.')

    h1_html_creator = html_creator('p')
    h1_html_creator('p 태그는 문단을 표시하는 태그입니다.')&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. practice&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;871&quot; data-origin-height=&quot;613&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cb7SSu/btszlGVwFuA/LmoOv1ivhK4IlEsKskBHd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cb7SSu/btszlGVwFuA/LmoOv1ivhK4IlEsKskBHd1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cb7SSu/btszlGVwFuA/LmoOv1ivhK4IlEsKskBHd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcb7SSu%2FbtszlGVwFuA%2FLmoOv1ivhK4IlEsKskBHd1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;871&quot; height=&quot;613&quot; data-origin-width=&quot;871&quot; data-origin-height=&quot;613&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1698708577907&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;def list_creator(tag):
    def list_wrapper(msg):
        print('{0} {1}'.format(tag, msg))

    return list_wrapper


if __name__ == '__main__':
    list_1 = list_creator('-')

    list_1('목차')
    list_2 = list_creator('*')
    list_2('기호')
    list_3 = list_creator('+')
    list_3('하이')&lt;/code&gt;&lt;/pre&gt;</description>
      <category>Develop Story/python</category>
      <category>first class function</category>
      <author>꿈꾸는만학도</author>
      <guid isPermaLink="true">https://oldboy79.tistory.com/18</guid>
      <comments>https://oldboy79.tistory.com/18#entry18comment</comments>
      <pubDate>Tue, 31 Oct 2023 10:46:34 +0900</pubDate>
    </item>
    <item>
      <title>flask의 시작</title>
      <link>https://oldboy79.tistory.com/17</link>
      <description>&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style14&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;1. flask 모듈 import&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;pip install flask&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;from flask import Flask&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style14&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;2. app에 Flask 객체 할당&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적인 flask 실행 약속&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같이 선언한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;app = Flask(__name__)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기서 __name__은 다음의 예시를 살펴 보면 알수 있겠다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1026&quot; data-origin-height=&quot;676&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cykghd/btsyuHlND6D/EJtwOJKS2WDy6ICGUqXvqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cykghd/btsyuHlND6D/EJtwOJKS2WDy6ICGUqXvqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cykghd/btsyuHlND6D/EJtwOJKS2WDy6ICGUqXvqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcykghd%2FbtsyuHlND6D%2FEJtwOJKS2WDy6ICGUqXvqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1026&quot; height=&quot;676&quot; data-origin-width=&quot;1026&quot; data-origin-height=&quot;676&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;__nam__ 변수는 모듈의 이름이 저장이 된다. 실행하는 코드에서는 __main__ 값이 들어가게 되어 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style14&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;3. What is route?&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;URL을 해당 페이지랑 연결을 해 준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들면,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://finance.naver.com/world/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://finance.naver.com/world/&lt;/a&gt; &amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네이버 해외증시 사이트이다... 여기서 world가 route라 보면 되겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 flask의 라우터를 구현해 보면 다음과 같이 만들수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;617&quot; data-origin-height=&quot;304&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpVd6t/btsyuc7mRf5/gJNoEzBk2wuKk6CEN0xUL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpVd6t/btsyuc7mRf5/gJNoEzBk2wuKk6CEN0xUL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpVd6t/btsyuc7mRf5/gJNoEzBk2wuKk6CEN0xUL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpVd6t%2Fbtsyuc7mRf5%2FgJNoEzBk2wuKk6CEN0xUL1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;617&quot; height=&quot;304&quot; data-origin-width=&quot;617&quot; data-origin-height=&quot;304&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버주소/hello에 접속하면 hello world가 출력된다는 간단한 라우터 구현이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style14&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;4. flast 서버 구동&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;flask는 간단한 서버를 구동해준다. node에서는 nodemon을 설치하여 수정을 반영하게 했었는데, 파이썬 flask는 nodemon 설치가 필요없다. 서버에서 자동으로 수정이 되었을때 반영해주니 너무 편하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 서버 설정을 해보자.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이거 역시 간단하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;app에 우리는 Flask 객체를 할당했었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;app.run만 하면 서버가 생성된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;host, port, debug 세가지 옵션의 파라미터를 넘겨주면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;687&quot; data-origin-height=&quot;471&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzexvq/btsysGPrWG6/QhzOCcDHmyzaRPe6LH2dcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzexvq/btsysGPrWG6/QhzOCcDHmyzaRPe6LH2dcK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzexvq/btsysGPrWG6/QhzOCcDHmyzaRPe6LH2dcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbzexvq%2FbtsysGPrWG6%2FQhzOCcDHmyzaRPe6LH2dcK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;687&quot; height=&quot;471&quot; data-origin-width=&quot;687&quot; data-origin-height=&quot;471&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 서버가 뚝딱....ㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;hello world의 첫 웹서버 탄생...짜잔&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;268&quot; data-origin-height=&quot;204&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yNTLu/btsytNmtNT2/bowky9RKKFoEWADdvshUE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yNTLu/btsytNmtNT2/bowky9RKKFoEWADdvshUE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yNTLu/btsytNmtNT2/bowky9RKKFoEWADdvshUE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyNTLu%2FbtsytNmtNT2%2Fbowky9RKKFoEWADdvshUE0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;268&quot; height=&quot;204&quot; data-origin-width=&quot;268&quot; data-origin-height=&quot;204&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Develop Story/flask</category>
      <category>flask</category>
      <author>꿈꾸는만학도</author>
      <guid isPermaLink="true">https://oldboy79.tistory.com/17</guid>
      <comments>https://oldboy79.tistory.com/17#entry17comment</comments>
      <pubDate>Sun, 15 Oct 2023 15:29:53 +0900</pubDate>
    </item>
    <item>
      <title>express에 대하여</title>
      <link>https://oldboy79.tistory.com/16</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;셋업을 다 했으면 express를 통하여 서버를 만들어 보자&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식문서를 참고해 본다 . 5버젼은 beta버젼이라 4.x으로 서술하겠다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://expressjs.com/en/4x/api.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://expressjs.com/en/4x/api.html&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1695675725947&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Express 4.x - API Reference&quot; data-og-description=&quot;Express 4.x API express() Creates an Express application. The express() function is a top-level function exported by the express module. var express = require('express') var app = express() Methods express.json([options]) This middleware is available in Ex&quot; data-og-host=&quot;expressjs.com&quot; data-og-source-url=&quot;https://expressjs.com/en/4x/api.html&quot; data-og-url=&quot;https://expressjs.com/en/4x/api.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://expressjs.com/en/4x/api.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://expressjs.com/en/4x/api.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Express 4.x - API Reference&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Express 4.x API express() Creates an Express application. The express() function is a top-level function exported by the express module. var express = require('express') var app = express() Methods express.json([options]) This middleware is available in Ex&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;expressjs.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;893&quot; data-origin-height=&quot;333&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yVGkW/btsvP95Ucs4/Fo0yDZISr299vGHM7Yss11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yVGkW/btsvP95Ucs4/Fo0yDZISr299vGHM7Yss11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yVGkW/btsvP95Ucs4/Fo0yDZISr299vGHM7Yss11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyVGkW%2FbtsvP95Ucs4%2FFo0yDZISr299vGHM7Yss11%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;893&quot; height=&quot;333&quot; data-origin-width=&quot;893&quot; data-origin-height=&quot;333&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공식문서의 서버설정 코드이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하나하나 정리해보자.&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style14&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;1. Server : request and response&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. 서버 초기 코드&lt;/p&gt;
&lt;pre id=&quot;code_1695675955513&quot; class=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;import express from &quot;express&quot;;

const app = express();

const PORT = 4000;

const handleListen = () =&amp;gt; console.log(`Server listening -&amp;gt; http://localhost:${PORT}`);

app.listen(PORT, handleListen);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;import express from &quot;express&quot;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Babel을 사용하기 때문에 이렇게 신문법을 사용해도 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적인 4000포트를 할당하고 공식문서처럼 코딩을 하였다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 이제 get 요청을 해보자&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1695676732193&quot; class=&quot;livescript&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;import express from &quot;express&quot;;
const app = express();
const PORT = 4000;
///////////////////////////////////////////////////////////////
app.get(&quot;/&quot;, ()=&amp;gt; console.log(&quot;this is callback&quot;));

///////////////////////////////////////////////////////////////
const handleListen = () =&amp;gt; console.log(`Server listening -&amp;gt; http://localhost:${PORT}`);
app.listen(PORT, handleListen);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTTP protocol을 사용하여 브라우저가 웹서버에게 get요청을 한 내용이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 응답하는 내용이 없어서 브라우저는 로드를 유지하고 서버의 응답을 기다리게 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. 그럼 response를 만들어 보자. 어떻게?&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 간단하다. request와 response를 가진 컨트롤러를 만들면 되겠지...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1695682493329&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import express from &quot;express&quot;;
const app = express();
const PORT = 4000;
///////////////////////////////////////////////////////////////
const controllerHome = (req, res) =&amp;gt;{
	return res.send(&quot;this is home&quot;);
}
const controllerLogin = (req, res) =&amp;gt;{
	return res.send(&quot;this is login page&quot;);
}

app.get(&quot;/&quot;, controllerHome);
app.get(&quot;/login&quot;, controllerLogin);

///////////////////////////////////////////////////////////////
const handleListen = () =&amp;gt; console.log(`Server listening -&amp;gt; http://localhost:${PORT}`);
app.listen(PORT, handleListen);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 하면 서버는 응답하여 페이지에 this is home이라고 메세지를 띄워 준다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. 공식문서 request, response 참고하여 필요시마다 properties를 찾아서 구현하면 되겠다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 일단은 send만 알아두자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 공식문서에 써있다..&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; Sends the HTTP response.&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; T&lt;u&gt;he&lt;span&gt;&amp;nbsp;&lt;/span&gt;body&lt;span&gt;&amp;nbsp;&lt;/span&gt;parameter can be a&lt;span&gt;&amp;nbsp;&lt;/span&gt;Buffer&lt;span&gt;&amp;nbsp;&lt;/span&gt;object, a&lt;span&gt;&amp;nbsp;&lt;/span&gt;String, an object,&lt;span&gt;&amp;nbsp;&lt;/span&gt;Boolean, or an&lt;span&gt;&amp;nbsp;&lt;/span&gt;Array.&lt;/u&gt;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #555555; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;a href=&quot;https://expressjs.com/en/4x/api.html#res.send&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://expressjs.com/en/4x/api.html#res.send&lt;/a&gt;&lt;/u&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1695682974559&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Express 4.x - API Reference&quot; data-og-description=&quot;Express 4.x API express() Creates an Express application. The express() function is a top-level function exported by the express module. var express = require('express') var app = express() Methods express.json([options]) This middleware is available in Ex&quot; data-og-host=&quot;expressjs.com&quot; data-og-source-url=&quot;https://expressjs.com/en/4x/api.html#res.send&quot; data-og-url=&quot;https://expressjs.com/en/4x/api.html#res.send&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://expressjs.com/en/4x/api.html#res.send&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://expressjs.com/en/4x/api.html#res.send&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Express 4.x - API Reference&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Express 4.x API express() Creates an Express application. The express() function is a top-level function exported by the express module. var express = require('express') var app = express() Methods express.json([options]) This middleware is available in Ex&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;expressjs.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style14&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;2. middleware&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;미들웨어는 서버로의 요청부터 응답이 오는 사이클 중간에 목적에 맞게 처리를 하는지, 소위말하자면 중간에 거처가는 함수들이라고 보면 되겠다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;따라서 모든 핸들러는 미들웨어이고, 모든 컨트롤러는 미들웨어이며 형태는 3가지 arguments로 이루어져 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;req, res, next&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모든 핸들러에 next만 삽입하면 미들웨어가 된다. 관습적으로 마지막에 동작하는 컨트롤러는 next를 사용하지 않는다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1695683491328&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import express from &quot;express&quot;;
const app = express();
const PORT = 4000;
///////////////////////////////////////////////////////////////
const middlewareone = (req, res, next) =&amp;gt;{
	next();
}
const middlewaretwo = (req, res, next) =&amp;gt;{
	next()
}
const controllerHome = (req, res) =&amp;gt; res.send(&quot;this is last handling&quot;);

app.get(&quot;/&quot;, middlewareone, middlewaretwo, controllerHome);


///////////////////////////////////////////////////////////////
const handleListen = () =&amp;gt; console.log(`Server listening -&amp;gt; http://localhost:${PORT}`);
app.listen(PORT, handleListen);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;페이지 별로 미들웨어를 설정하고 싶지 않으면 즉 중복코드를 피하고 싶으면,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;app.use(middlewareone, middlewaretwon) 를 적용하고 싶은 get호출 위에 바로 삽입하면 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style14&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;3. 외부 미들웨어&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대표적으로 많이 사용하는 미들웨어 모듈은 morgan이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.npmjs.com/package/morgan&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.npmjs.com/package/morgan&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1695684101688&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;morgan&quot; data-og-description=&quot;HTTP request logger middleware for node.js. Latest version: 1.10.0, last published: 4 years ago. Start using morgan in your project by running &amp;#96;npm i morgan&amp;#96;. There are 8636 other projects in the npm registry using morgan.&quot; data-og-host=&quot;www.npmjs.com&quot; data-og-source-url=&quot;https://www.npmjs.com/package/morgan&quot; data-og-url=&quot;https://www.npmjs.com/package/morgan&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/JpuUI/hyT2vKLRMn/w3ceaaVXb6rgKzVMzCg85k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://www.npmjs.com/package/morgan&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.npmjs.com/package/morgan&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/JpuUI/hyT2vKLRMn/w3ceaaVXb6rgKzVMzCg85k/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;morgan&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;HTTP request logger middleware for node.js. Latest version: 1.10.0, last published: 4 years ago. Start using morgan in your project by running `npm i morgan`. There are 8636 other projects in the npm registry using morgan.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.npmjs.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 공식 사이트를 참고하자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그밖에 자주 사용하는 미들웨어는 다음에 정리 되어 있으니 살펴보도록하자 필요할때 읽어보고 찾아오면 될것 같다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://velog.io/@eogns1208/Express-%EC%9E%90%EC%A3%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EB%AF%B8%EB%93%A4%EC%9B%A8%EC%96%B4&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://velog.io/@eogns1208/Express-%EC%9E%90%EC%A3%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EB%AF%B8%EB%93%A4%EC%9B%A8%EC%96%B4&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1695684191945&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Express - 자주 사용하는 미들웨어&quot; data-og-description=&quot;1. morgan 2. static 3. body-parser 4. cookie-parser 5. express-session 6. multer&quot; data-og-host=&quot;velog.io&quot; data-og-source-url=&quot;https://velog.io/@eogns1208/Express-%EC%9E%90%EC%A3%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EB%AF%B8%EB%93%A4%EC%9B%A8%EC%96%B4&quot; data-og-url=&quot;https://velog.io/@eogns1208/Express-자주-사용하는-미들웨어&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/tught/hyTZcsxwtm/b8qL85GdRD1bejZWbSHT5k/img.png?width=950&amp;amp;height=500&amp;amp;face=0_0_950_500,https://scrap.kakaocdn.net/dn/c8cLeO/hyTY60adIG/mGDAYUqzHvCw3Ma6qn4XF0/img.jpg?width=891&amp;amp;height=461&amp;amp;face=0_0_891_461,https://scrap.kakaocdn.net/dn/daHjf8/hyTY4Vyvb6/pK8kF9mVHrf6KsfQyyfuK1/img.jpg?width=749&amp;amp;height=422&amp;amp;face=0_0_749_422&quot;&gt;&lt;a href=&quot;https://velog.io/@eogns1208/Express-%EC%9E%90%EC%A3%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EB%AF%B8%EB%93%A4%EC%9B%A8%EC%96%B4&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://velog.io/@eogns1208/Express-%EC%9E%90%EC%A3%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94-%EB%AF%B8%EB%93%A4%EC%9B%A8%EC%96%B4&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/tught/hyTZcsxwtm/b8qL85GdRD1bejZWbSHT5k/img.png?width=950&amp;amp;height=500&amp;amp;face=0_0_950_500,https://scrap.kakaocdn.net/dn/c8cLeO/hyTY60adIG/mGDAYUqzHvCw3Ma6qn4XF0/img.jpg?width=891&amp;amp;height=461&amp;amp;face=0_0_891_461,https://scrap.kakaocdn.net/dn/daHjf8/hyTY4Vyvb6/pK8kF9mVHrf6KsfQyyfuK1/img.jpg?width=749&amp;amp;height=422&amp;amp;face=0_0_749_422');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Express - 자주 사용하는 미들웨어&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;1. morgan 2. static 3. body-parser 4. cookie-parser 5. express-session 6. multer&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;velog.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Develop Story/node</category>
      <category>express</category>
      <author>꿈꾸는만학도</author>
      <guid isPermaLink="true">https://oldboy79.tistory.com/16</guid>
      <comments>https://oldboy79.tistory.com/16#entry16comment</comments>
      <pubDate>Tue, 26 Sep 2023 08:24:59 +0900</pubDate>
    </item>
    <item>
      <title>nodejs set up</title>
      <link>https://oldboy79.tistory.com/15</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Nodejs 로 개발하기 처음 할일을 적어보려 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;초보시절에 네코쌤 한테 배운 셋업... 고맙습니다. ㅎㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;당연히 git repo&amp;nbsp; 생성이겠지?&amp;nbsp; 아닌가...ㅋ&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;난 git 부터 생성할꼬야&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작업 폴더를 만들고, git init을 해본다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;git을 설치 안했으면 다음 포스팅 참고하면 된다. 나는 귀찮아서 포스팅 안해....&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://taewow.tistory.com/13&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;git설치&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1695263313178&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[GITHUB 입문] Git 설치하기(2.35.1 이상, 상세한 설치법)&quot; data-og-description=&quot;[GITHUB 입문] 깃허브 사용법 - 2 Git 설치하기 Git과 GitHub에 관해 다룬 이전 글([GITHUB 입문] Git과 GitHub의 차이)을 작성하다 보니 한 가지 아쉬움이 있었습니다. 독자가 Git을 설치하여 직접 따라 하면 &quot; data-og-host=&quot;taewow.tistory.com&quot; data-og-source-url=&quot;https://taewow.tistory.com/13&quot; data-og-url=&quot;https://taewow.tistory.com/13&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cZOP1W/hyTYY7G0Cu/GN7CLTp62UBP3DW2cyhHT0/img.jpg?width=270&amp;amp;height=270&amp;amp;face=0_0_270_270,https://scrap.kakaocdn.net/dn/QvpNS/hyTY8bnDqT/dWWoRfkrfKov8r9YTwvmKk/img.jpg?width=270&amp;amp;height=270&amp;amp;face=0_0_270_270,https://scrap.kakaocdn.net/dn/PrzA6/hyTZebCqj0/ds5AwS0Nd95D0vB1iVBKZ1/img.png?width=623&amp;amp;height=490&amp;amp;face=0_0_623_490&quot;&gt;&lt;a href=&quot;https://taewow.tistory.com/13&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://taewow.tistory.com/13&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cZOP1W/hyTYY7G0Cu/GN7CLTp62UBP3DW2cyhHT0/img.jpg?width=270&amp;amp;height=270&amp;amp;face=0_0_270_270,https://scrap.kakaocdn.net/dn/QvpNS/hyTY8bnDqT/dWWoRfkrfKov8r9YTwvmKk/img.jpg?width=270&amp;amp;height=270&amp;amp;face=0_0_270_270,https://scrap.kakaocdn.net/dn/PrzA6/hyTZebCqj0/ds5AwS0Nd95D0vB1iVBKZ1/img.png?width=623&amp;amp;height=490&amp;amp;face=0_0_623_490');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[GITHUB 입문] Git 설치하기(2.35.1 이상, 상세한 설치법)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;[GITHUB 입문] 깃허브 사용법 - 2 Git 설치하기 Git과 GitHub에 관해 다룬 이전 글([GITHUB 입문] Git과 GitHub의 차이)을 작성하다 보니 한 가지 아쉬움이 있었습니다. 독자가 Git을 설치하여 직접 따라 하면&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;taewow.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style14&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;1. 개발 시작하기&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. git init&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. repository 생성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. git remote add origin [깃 URL]&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1156&quot; data-origin-height=&quot;128&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mvapz/btsuJdwDQ5R/ack93yThKVMiyCJ4guAfyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mvapz/btsuJdwDQ5R/ack93yThKVMiyCJ4guAfyk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mvapz/btsuJdwDQ5R/ack93yThKVMiyCJ4guAfyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fmvapz%2FbtsuJdwDQ5R%2Fack93yThKVMiyCJ4guAfyk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1156&quot; height=&quot;128&quot; data-origin-width=&quot;1156&quot; data-origin-height=&quot;128&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. npm init 으로 package.json 을 만든다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러면 잠시 package.json을 살펴보자.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;842&quot; data-origin-height=&quot;383&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dr3rRi/btsuQQnIZeg/W1LLtSbk9S49JZBlKSGP40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dr3rRi/btsuQQnIZeg/W1LLtSbk9S49JZBlKSGP40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dr3rRi/btsuQQnIZeg/W1LLtSbk9S49JZBlKSGP40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdr3rRi%2FbtsuQQnIZeg%2FW1LLtSbk9S49JZBlKSGP40%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;842&quot; height=&quot;383&quot; data-origin-width=&quot;842&quot; data-origin-height=&quot;383&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;scripts를 유심히 보기 바란다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저 부분의 설정으로&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음과 같이 프로그램을 실행할 수가 있게 되는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;node실행을 위해서 node index.js 를 보통 실행을 하지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노란 박스 부분의 설정으로 우리는 다음과 같이 index.js를 실행 시킬 수가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;npm run dev&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style14&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;2. express 설치&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;npm i express&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;express 설치를 하고 나면&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;310&quot; data-origin-height=&quot;177&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qQlCu/btsuREULHAs/iuyQUfU1TsBOnSvKplKbI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qQlCu/btsuREULHAs/iuyQUfU1TsBOnSvKplKbI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qQlCu/btsuREULHAs/iuyQUfU1TsBOnSvKplKbI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqQlCu%2FbtsuREULHAs%2FiuyQUfU1TsBOnSvKplKbI1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;310&quot; height=&quot;177&quot; data-origin-width=&quot;310&quot; data-origin-height=&quot;177&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;node_modules과 package-lock.json이 생긴다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style14&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;3. npm i&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;841&quot; data-origin-height=&quot;441&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cYqIXo/btsuPPvODge/e5PcUhfpUhMGV4TkkDZX5K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cYqIXo/btsuPPvODge/e5PcUhfpUhMGV4TkkDZX5K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cYqIXo/btsuPPvODge/e5PcUhfpUhMGV4TkkDZX5K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcYqIXo%2FbtsuPPvODge%2Fe5PcUhfpUhMGV4TkkDZX5K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;841&quot; height=&quot;441&quot; data-origin-width=&quot;841&quot; data-origin-height=&quot;441&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;dependecies를 이용하여 모든 모듈을 설치하므로 매번 패키지를 설치할 필요없다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;용량큰 모듈을 git에 올릴 필요 없이.... 소스코드와 package.json만 업로드 하고,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자는 다운 받은 후&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;jus&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;npm i&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하면 그냥 끝....&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그럼 git에 업로드를 하지 않기 위에&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.gitignore를 만들어 주자&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;661&quot; data-origin-height=&quot;281&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmeH3I/btsuRGkO7z8/Zf0cbqAQSSQwFyYS77J3RK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmeH3I/btsuRGkO7z8/Zf0cbqAQSSQwFyYS77J3RK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmeH3I/btsuRGkO7z8/Zf0cbqAQSSQwFyYS77J3RK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmeH3I%2FbtsuRGkO7z8%2FZf0cbqAQSSQwFyYS77J3RK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;661&quot; height=&quot;281&quot; data-origin-width=&quot;661&quot; data-origin-height=&quot;281&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style14&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;4. Babel&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://babeljs.io/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://babeljs.io/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1695275817250&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Babel &amp;middot; Babel&quot; data-og-description=&quot;The compiler for next generation JavaScript&quot; data-og-host=&quot;babeljs.io&quot; data-og-source-url=&quot;https://babeljs.io/&quot; data-og-url=&quot;https://babeljs.io/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://babeljs.io/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://babeljs.io/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Babel &amp;middot; Babel&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;The compiler for next generation JavaScript&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;babeljs.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;nodeJs 가 이해 하지 못하는 최신 자바 스크립트 코드를 컴파일해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. install&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;background-color: #fdfaeb; color: #4271ae; text-align: start;&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;background-color: #fdfaeb; color: #4d4d4c; text-align: start;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #fdfaeb; color: #4271ae; text-align: start;&quot;&gt;install&lt;/span&gt;&lt;span style=&quot;background-color: #fdfaeb; color: #4d4d4c; text-align: start;&quot;&gt; --save-dev @babel/core&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #fdfaeb; color: #4d4d4c; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;841&quot; data-origin-height=&quot;465&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cRfPcg/btsuRHqANxu/kZ9vMItQvo37TxS1kwiliK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cRfPcg/btsuRHqANxu/kZ9vMItQvo37TxS1kwiliK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cRfPcg/btsuRHqANxu/kZ9vMItQvo37TxS1kwiliK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcRfPcg%2FbtsuRHqANxu%2FkZ9vMItQvo37TxS1kwiliK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;841&quot; height=&quot;465&quot; data-origin-width=&quot;841&quot; data-origin-height=&quot;465&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; --save-dev로 인스톨을 하면 devDependencies에 생성이 된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 이는 개발자에게 필요한 dependency라 보면 될것 같다. 프로그램개발에 사용되는것이라기 보다는 개발자의 편의성을 위해 만들어진 모듈이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. &lt;span style=&quot;background-color: #fdfaeb; color: #4271ae; text-align: start;&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;background-color: #fdfaeb; color: #4d4d4c; text-align: start;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #fdfaeb; color: #4271ae; text-align: start;&quot;&gt;install&lt;/span&gt;&lt;span style=&quot;background-color: #fdfaeb; color: #4d4d4c; text-align: start;&quot;&gt; @babel/preset-env --save-dev&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #fdfaeb; color: #4d4d4c; text-align: start;&quot;&gt;&amp;nbsp; &amp;nbsp; 인스톨 하면 된다. 플러그인의 일종, react, typescript 등에서도 사용가능하다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. babel.config.json 파일을 만들고 다음을 붙여넣고 저장하자. (공식문서 참고)&lt;/p&gt;
&lt;pre id=&quot;code_1695276789307&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;{
&quot;presets&quot;: [&quot;@babel/preset-env&quot;]
}&lt;/code&gt;&lt;/pre&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style14&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;5. nodemon의 설치&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://babeljs.io/setup#installation&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://babeljs.io/setup#installation&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1695277334921&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Babel&quot; data-og-description=&quot;Great! You've configured Babel but you haven't made it actually do anything. Create a babel.config.json config in your project root and enable some presets. To start, you can use the env preset, which enables transforms for ES2015+ npm install @babel/prese&quot; data-og-host=&quot;babeljs.io&quot; data-og-source-url=&quot;https://babeljs.io/setup#installation&quot; data-og-url=&quot;https://babeljs.io/setup&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://babeljs.io/setup#installation&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://babeljs.io/setup#installation&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Babel&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Great! You've configured Babel but you haven't made it actually do anything. Create a babel.config.json config in your project root and enable some presets. To start, you can use the env preset, which enables transforms for ES2015+ npm install @babel/prese&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;babeljs.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. install&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;span style=&quot;background-color: #fdfaeb; color: #4271ae; text-align: start;&quot;&gt;npm&lt;/span&gt;&lt;span style=&quot;background-color: #fdfaeb; color: #4d4d4c; text-align: start;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #fdfaeb; color: #4271ae; text-align: start;&quot;&gt;install&lt;/span&gt;&lt;span style=&quot;background-color: #fdfaeb; color: #4d4d4c; text-align: start;&quot;&gt; @babel/core @babel/node --save-dev&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; node 대신에 babel-node를 사용하기 위해 인스톨 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. package.json의 스크립트 변경&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;388&quot; data-origin-height=&quot;96&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/H00VY/btsuQv4V1OG/GZ6o4zPr7fln1AHLgyTeW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/H00VY/btsuQv4V1OG/GZ6o4zPr7fln1AHLgyTeW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/H00VY/btsuQv4V1OG/GZ6o4zPr7fln1AHLgyTeW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FH00VY%2FbtsuQv4V1OG%2FGZ6o4zPr7fln1AHLgyTeW1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;388&quot; height=&quot;96&quot; data-origin-width=&quot;388&quot; data-origin-height=&quot;96&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. nodemon 설치&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; npm i nodemon --save-dev&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4. script 변경&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;566&quot; data-origin-height=&quot;96&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boXXiy/btsu7VnpEuO/WFGuBgUX2WEvxrlAn9aR4K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boXXiy/btsu7VnpEuO/WFGuBgUX2WEvxrlAn9aR4K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boXXiy/btsu7VnpEuO/WFGuBgUX2WEvxrlAn9aR4K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboXXiy%2Fbtsu7VnpEuO%2FWFGuBgUX2WEvxrlAn9aR4K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;566&quot; height=&quot;96&quot; data-origin-width=&quot;566&quot; data-origin-height=&quot;96&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Develop Story/node</category>
      <category>node setup</category>
      <author>꿈꾸는만학도</author>
      <guid isPermaLink="true">https://oldboy79.tistory.com/15</guid>
      <comments>https://oldboy79.tistory.com/15#entry15comment</comments>
      <pubDate>Thu, 21 Sep 2023 15:38:57 +0900</pubDate>
    </item>
    <item>
      <title>프롤로그</title>
      <link>https://oldboy79.tistory.com/14</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1913&quot; data-origin-height=&quot;429&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/clH39a/btsu0Df2ope/kg9mYnKFLrIjX0BQKUAZHk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/clH39a/btsu0Df2ope/kg9mYnKFLrIjX0BQKUAZHk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/clH39a/btsu0Df2ope/kg9mYnKFLrIjX0BQKUAZHk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FclH39a%2Fbtsu0Df2ope%2Fkg9mYnKFLrIjX0BQKUAZHk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1913&quot; height=&quot;429&quot; data-origin-width=&quot;1913&quot; data-origin-height=&quot;429&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;nodejs 공부한지는 꽤 오래 되었는데.....&amp;nbsp; 뭔가 머리속에서 어수선 하다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정리할겸 적어 내려가봐야겠다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;npm : npm is a package manager for the JavaSCript programming language.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;npm의 정의, nodejs랑 같이 써야하고 패키지를 공유할수 있단다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;express부터 시스템이 어떻게 만들어지는지 공부하고 정리해보자.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;한달안에 끝내야해.... nodejs로 면접 봐야하거든....후덜덜.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Develop Story/node</category>
      <author>꿈꾸는만학도</author>
      <guid isPermaLink="true">https://oldboy79.tistory.com/14</guid>
      <comments>https://oldboy79.tistory.com/14#entry14comment</comments>
      <pubDate>Thu, 21 Sep 2023 09:05:48 +0900</pubDate>
    </item>
    <item>
      <title>Cultus Lake - clear creek campground</title>
      <link>https://oldboy79.tistory.com/11</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;캐나다에 온지 어느덧 1년 반이 지났다. 작년 여름에 3군데에 캠핑장을 다녀왔는데,&amp;nbsp; 랭리로 이사온 이후로는 이번이 첫 캠핑이다. 오랜만에 설렘으로 칠리왁으로 향했다. 칠리왁도 처음 들어본 곳이고 인생 처음으로 가보는 곳이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;옥수수가 유명하다던데.......&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;출발전 스타벅스에 들려 아이스 아메리카노를 사고....&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다행이도 내가 살고 있는 곳에서 한시간 정도밖에 걸리지 않았다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.outdoorproject.com/canada/british-columbia/clear-creek-campground&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.outdoorproject.com/canada/british-columbia/clear-creek-campground&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1693256593803&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;activity&quot; data-og-title=&quot;Clear Creek Campground&quot; data-og-description=&quot;Although it&amp;rsquo;s one of the larger campgrounds in Cultus Lake Provincial Park, Clear Creek Campground serves up sites that are remarkably private and feel tucked away. It&amp;rsquo;s one of the best places to camp in the heat of the summertime&amp;mdash;old-growth Douglas &quot; data-og-host=&quot;www.outdoorproject.com&quot; data-og-source-url=&quot;https://www.outdoorproject.com/canada/british-columbia/clear-creek-campground&quot; data-og-url=&quot;https://www.outdoorproject.com/canada/british-columbia/clear-creek-campground&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cGxDjB/hyTMdX8e17/7h25JLD5jycPGBF4H9MZV0/img.jpg?width=1620&amp;amp;height=1080&amp;amp;face=0_0_1620_1080&quot;&gt;&lt;a href=&quot;https://www.outdoorproject.com/canada/british-columbia/clear-creek-campground&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.outdoorproject.com/canada/british-columbia/clear-creek-campground&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cGxDjB/hyTMdX8e17/7h25JLD5jycPGBF4H9MZV0/img.jpg?width=1620&amp;amp;height=1080&amp;amp;face=0_0_1620_1080');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Clear Creek Campground&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Although it&amp;rsquo;s one of the larger campgrounds in Cultus Lake Provincial Park, Clear Creek Campground serves up sites that are remarkably private and feel tucked away. It&amp;rsquo;s one of the best places to camp in the heat of the summertime&amp;mdash;old-growth Douglas&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.outdoorproject.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=QaIYaDTUqME&quot;&gt;https://www.youtube.com/watch?v=QaIYaDTUqME&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=QaIYaDTUqME&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bdJos8/hyTL7p5Ak9/kGFSob3B7icjZi3Omwdss1/img.jpg?width=640&amp;amp;height=480&amp;amp;face=0_0_640_480&quot; data-video-width=&quot;640&quot; data-video-height=&quot;480&quot; data-video-origin-width=&quot;640&quot; data-video-origin-height=&quot;480&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/QaIYaDTUqME&quot; width=&quot;640&quot; height=&quot;480&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어느 캠핑장이랑 비슷했다. 그런데 좀 작은거 같다. 다른 스팟의 사람들이 눈에 다 보인다. ㅎㅎ 전 캠핑장에서는 독립적이라 보이지 않았던거 같은데....우리의 번호는 site 43&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수도가 바로 앞에 있어서 좋았고 조금만 올라가면 화장실이 있어서 멀지 않아서 좋았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;첫날은 이렇게 텐트를 치고 야외 주방을 만들고 월마트로 향했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;25분내외에 월마트가 있다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;장을 보고 캠프사이트로 와서 저녁을 먹고 캠프사이트 산책을 하고 텐트로 들어갈 준비.....&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;얼마전에 쿠거가 나왔다고 한다. 모든 음식과 쓰레기를 차 안에 넣었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 영화 감상 엘레멘탈&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=BOqFRHCrN-k&quot;&gt;https://www.youtube.com/watch?v=BOqFRHCrN-k&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=BOqFRHCrN-k&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/cUjrlF/hyTMaUEVGz/NXEcrZwGpkrBKXwMQ1nHbk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=704_352_852_500&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/BOqFRHCrN-k&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;집중하며 보지 않아서 대충 내용 잘 모르겠으나, 물,불 절대 섞일수 없는 존재들이 결국엔 사랑을 하고 하나가 된다는....&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런 스토리인거 같은데,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 살고 있는 이 캐나다의 삶이랑 많이 연관이 되는거 같다. 한국인, 중국인, 인도, 캐나다인 이렇게 각자의 커뮤니티속에서 우리는 또 이들과 어우러져 살아가고 있다. 이곳이 캐나다이다. 각자의 문화 언어를 존중하면서 즐기고 서로 공유하며 우리는 살아가야 한다. 영화 블로그가 아니니 이만 생략하기로 하고....&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;의미있는 영화를 보며 하루를 마무리 했다...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;둘째날은 차를 열어본순간 OMG!!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쥐들의 습격사건......&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떻게 쥐들이 들어왔는지 모르겠다. 쥐들이 모든 음식들에게 테러를.....&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;온갖 음식들에 구멍을 내놓고, 갉아 먹고...... 와이프가 무지 화남&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;휴휴...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;비가 좀 와서.....&amp;nbsp; 좀 쉬는 시간을 갖고 사실 심신을 달래야 하는...쥐들의 습격으로 음식도 내 마음도 상처를 입었다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마음을 추스르고 모든 레이크 장비를 가지고 바로 길만 건너면 되는 곳으로 향했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;날씨가 흐려서 물이 차가웠지만 해도 없고하니 놀기가 좋았다. 어쨌거나 나는 보트를 탈거니까.....&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나........&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;물에 퐁당 ㅋㅋㅋ&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보트를 타고 노를 젓고 물에 퐁당하여 강제로 수영도 하고......추웠지만 잼있었다는....&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;거기서 한참을 보내고 다시 캠핑장으로 왔다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;된장국과 고등어 구이로 저녁을 긴급하게 처리하고...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 월마트로......&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;테러범들 꼭 잡고야 말테다... 근데 무슨 수로 잡나..ㅋ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;월마트에서 빵과 간단한 과자 음료를 사서 돌아왔다. 사실 레이크 근처에 마트가 있긴 한데&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노트북에 충전을 하기 위해 드라이브를 한 것이다. ㅎㅎ&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;캠핑장으로 돌아와서 잘준비를 하고 쥐들의 테러를 막기 위해 이민가방에 모든 식료품을 넣고&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;음식은 아이스박스에 담고 차를 잠갔다. 쥐가 제발 테러 하지 않기를 바라는 마음으로.....&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;텐트로 들어가서 다시 우리는 영화감상을 다시 했다. 이번은....엔칸토..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://movie.daum.net/moviedb/main?movieId=152081&quot;&gt;https://movie.daum.net/moviedb/main?movieId=152081&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1693259156207&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;엔칸토: 마법의 세계&quot; data-og-description=&quot;Daum영화에서 자세한 내용을 확인하세요!&quot; data-og-host=&quot;movie.daum.net&quot; data-og-source-url=&quot;https://movie.daum.net/moviedb/main?movieId=152081&quot; data-og-url=&quot;https://movie.daum.net/moviedb/main?movieId=152081&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ZnAQw/hyTL8bsOwI/HMC8FVFmAAwWowKLdJ3nS1/img.jpg?width=1611&amp;amp;height=2296&amp;amp;face=290_631_1395_1445&quot;&gt;&lt;a href=&quot;https://movie.daum.net/moviedb/main?movieId=152081&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://movie.daum.net/moviedb/main?movieId=152081&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ZnAQw/hyTL8bsOwI/HMC8FVFmAAwWowKLdJ3nS1/img.jpg?width=1611&amp;amp;height=2296&amp;amp;face=290_631_1395_1445');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;엔칸토: 마법의 세계&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Daum영화에서 자세한 내용을 확인하세요!&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;movie.daum.net&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 나는 텐트밖으로 나와서 500ml 맥주 한잔을 했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;캐나다 에서 볼수 있는 밤하늘....더군다나 숲속에서 보는 밤하늘의 별은 참 멋지다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;edited_KakaoTalk_20230828_140805969_04.jpg&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cer70n/btssvyuOdD4/grvA9QFpSpbMjMEtDJUg40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cer70n/btssvyuOdD4/grvA9QFpSpbMjMEtDJUg40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cer70n/btssvyuOdD4/grvA9QFpSpbMjMEtDJUg40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcer70n%2FbtssvyuOdD4%2FgrvA9QFpSpbMjMEtDJUg40%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;533&quot; data-filename=&quot;edited_KakaoTalk_20230828_140805969_04.jpg&quot; data-origin-width=&quot;400&quot; data-origin-height=&quot;533&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 칠리왁에서의 두번째 밤은 지나갔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음날은 오는길에 이곳에서 유명하다는 아이스크림 샾에 들렀다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아이스크림 가격이 후덜덜 하다. ㅎ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어쩐지 아이스크림이 크더라.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJrB9r/btssqzHBVk3/PwhuzyOHNarMz5SNkf4Wl0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJrB9r/btssqzHBVk3/PwhuzyOHNarMz5SNkf4Wl0/img.jpg&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;3024&quot; data-origin-height=&quot;4032&quot; data-filename=&quot;KakaoTalk_20230828_140805969.jpg&quot; width=&quot;420&quot; style=&quot;width: 48.8804%; margin-right: 10px;&quot; data-widthpercent=&quot;49.46&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJrB9r/btssqzHBVk3/PwhuzyOHNarMz5SNkf4Wl0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJrB9r%2FbtssqzHBVk3%2FPwhuzyOHNarMz5SNkf4Wl0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;3024&quot; height=&quot;4032&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ezdEny/btsshpTpu0S/D02k9JZIY0bpmWGhYkQFhk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ezdEny/btsshpTpu0S/D02k9JZIY0bpmWGhYkQFhk/img.png&quot; data-is-animation=&quot;false&quot; data-origin-width=&quot;2738&quot; data-origin-height=&quot;3572&quot; data-filename=&quot;moose.png&quot; width=&quot;420&quot; style=&quot;width: 49.9569%;&quot; data-widthpercent=&quot;50.54&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ezdEny/btsshpTpu0S/D02k9JZIY0bpmWGhYkQFhk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FezdEny%2FbtsshpTpu0S%2FD02k9JZIY0bpmWGhYkQFhk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2738&quot; height=&quot;3572&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오는길에 아보츠포드에 들렀다. 앞으로 이사갈 동네를 살펴보려고 한다. 그러나...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그냥 pass, 별로 예쁘지 않더라. 그냥 실망감으로 돌아오면서 이번 여행은 끝났다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음주는 버논으로 캠핑을 간다. 버논은 RNIP때문에 한국에 있을때 부터 궁금했던 도시였다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버논은 어떨까? 예쁜도시이길 바래본다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>캐나다Life/여행 이모저모</category>
      <author>꿈꾸는만학도</author>
      <guid isPermaLink="true">https://oldboy79.tistory.com/11</guid>
      <comments>https://oldboy79.tistory.com/11#entry11comment</comments>
      <pubDate>Tue, 29 Aug 2023 07:00:05 +0900</pubDate>
    </item>
    <item>
      <title>BCIT 이야기</title>
      <link>https://oldboy79.tistory.com/3</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 나는 BCIT CST에 재학중이다. 이 카테고리를 통하여 과거의 입시 준비부터 적어보려고 한다. 시간이 많이 지났지만 되도록 기억을 되살려 최대한 객관적이게 적어보려고 한다. 사실 노션에 그때 그때 나만의 스토리를 정리해 둔게 있는데, 개인 기록용이다. 누구에게 읽혀지는게 싫었다. 그래서 블로그에 적지는 않았는데, 일부 블로그에서 어그로를 끌어 수익창줄을 하고 또, 너무도 주관적인 자기자랑식의 글을 적어 객관성이 결여된 정보를 제공하고 있음에 분노(?)가 느껴서 bcit를 희망하는 후배들에게 조금이나마 객관적인 판단을 돕고자 글을 기록해봐야겠다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 나 스스로도 주관적이지 않게 채찍질하며 검토하고 써내려가보려고 한다. 주관적인 느낌일 경우에는 내생각이라고 반드시 표기를 하여 독자로 하여금 스스로 판단하도록 하겠다. 비판은 겸허하게 받아 들이겠다. 언제든 잘못된 정보를 제공하고 있다면 댓글 부탁한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1101&quot; data-origin-height=&quot;588&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVqs9y/btsk2z2hGKJ/COYkdRZz8HPoKGrXCvIehk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVqs9y/btsk2z2hGKJ/COYkdRZz8HPoKGrXCvIehk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVqs9y/btsk2z2hGKJ/COYkdRZz8HPoKGrXCvIehk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVqs9y%2Fbtsk2z2hGKJ%2FCOYkdRZz8HPoKGrXCvIehk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1101&quot; height=&quot;588&quot; data-origin-width=&quot;1101&quot; data-origin-height=&quot;588&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>캐나다Life/BCIT 이야기</category>
      <category>bcit CST</category>
      <author>꿈꾸는만학도</author>
      <guid isPermaLink="true">https://oldboy79.tistory.com/3</guid>
      <comments>https://oldboy79.tistory.com/3#entry3comment</comments>
      <pubDate>Fri, 23 Jun 2023 11:47:30 +0900</pubDate>
    </item>
    <item>
      <title>방학중 프로젝트 진행상황</title>
      <link>https://oldboy79.tistory.com/2</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;1. 물류 라벨 및 재고관리 프로그램 리뉴얼&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 모바일 코틀린으로 개발하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. RPA 자동라벨 프로그램 개발&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여름방학한지가 10일이 넘었는데....&amp;nbsp; 위의 프로젝트들을 시작도 하지 않았다. 8월까지 마무리 해야하는데....&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;갑자기 마음이 급해진다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내일부터 구체적으로 계획을 세워서 진행해야겠다. 진행상황을 블로그에 공유하여 스스로 자각하면서&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;진행해보겠다. 보는 사람이 없어도 좋다. 나와의 약속이니까....&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Develop Story/project story</category>
      <author>꿈꾸는만학도</author>
      <guid isPermaLink="true">https://oldboy79.tistory.com/2</guid>
      <comments>https://oldboy79.tistory.com/2#entry2comment</comments>
      <pubDate>Mon, 12 Jun 2023 16:26:50 +0900</pubDate>
    </item>
  </channel>
</rss>