πŸŽ„ μ„±μž₯일지 3.1

μ±… ν–‰λ³΅ν•œ 이기주의자(웨인 닀이어)의 λ‚΄μš©μ— μžκ·Ήλ°›μ•„ μ‹œμž‘ν•˜λŠ” μ†Œλ°•ν•œ μ„±μž₯기둝

μ‚΄μ•„μžˆλŠ” 꽃과 죽은 꽃은 μ–΄λ–»κ²Œ κ΅¬λ³„ν•˜λŠ”κ°€?
μ„±μž₯ν•˜κ³  μžˆλŠ” 것이 μ‚΄μ•„ μžˆλŠ” 것이닀.
생λͺ…μ˜ μœ μΌν•œ μ¦κ±°λŠ” μ„±μž₯이닀!

🌳 ν‚€μ›Œλ“œ (1.0)
μ΅œλŒ€ν•œ κ°„λ‹¨ν•˜κ²Œ 정리, 좔후에 λ³΄λ©΄μ„œ 슀슀둜 μ„€λͺ…
πŸ‰ κ²½ν—˜ μœ„μ£Όλ‘œ (2.0)
λ‹¨μˆœ 정보λ₯Ό μ „λ‹¬ν•˜κΈ°λ³΄λ‹€ 무엇을 λ°°μ› κ³  μ–΄λ–»κ²Œ ν•΄κ²°ν–ˆλŠ”μ§€ 짧고 κ°„λ‹¨ν•˜κ²Œ μž‘μ„±
❄️ 정해진 ν…œν”Œλ¦Ώμ— λ§žμΆ°μ„œ (3.0)
ν‚€μ›Œλ“œ, κ²½ν—˜ λͺ¨λ‘ μ’‹λ‹€. λ‹€λ§Œ 맀일 μž‘μ„±ν•˜κΈ°λ‘œ 마음 λ¨Ήμ€λ§ŒνΌ ν•΅μ‹¬λ§Œ κ°„κ²°ν•˜κ²Œ 정리할 수 있게 ν…œν”Œλ¦Ώμ„ μž‘μ„± (3.1) 230102λΆ€ν„° μ‹œμž‘λ˜λŠ” ν•™μŠ΅μ— κ΄€ν•œ λ‚΄μš© μΆ”κ°€

πŸ”‘ 였늘의 ν‚€μ›Œλ“œ

μΊμ‹œ μ •μ±…

  • λΈŒλΌμš°μ €κ°€ μ–΄λ–»κ²Œ μΊμ‹œλ₯Ό 관리할지 μ •ν•˜λŠ” 것
  • 기본적으둜 λ„€νŠΈμ›Œν¬ μƒμ—μ„œ 무언가λ₯Ό μš”μ²­ν•˜κ³  μ‘λ‹΅λ°›λŠ” 것은 느리고 큰 λΉ„μš©μ΄ λ“ λ‹€.
  • λ•Œλ¬Έμ—, λͺ¨λ“  λΈŒλΌμš°μ €λŠ” ν•œλ²ˆ 응닡받은 적이 μžˆλŠ” 데이터에 λŒ€ν•΄ μ €μž₯해두고 이후 동일 ν•œ 데이터 호좜 μ‹œ μš”μ²­ν•˜μ§€ μ•Šκ³  μΊμ‹œμ—μ„œ κ°€μ Έμ˜¨λ‹€.
  • 이런 μΊμ‹œμ˜ 수λͺ…(μœ μ§€μ‹œκ°„)을 κ²°μ •ν•˜λŠ” λ‹€μ–‘ν•œ 방법듀이 μ‘΄μž¬ν•œλ‹€.

HTTP

  • HyperText Transform Protocol; 즉, HTML을 κ΅ν™˜ν•˜κΈ° μœ„ν•œ κ·œμΉ™(ν‘œμ€€)
  • μ›Ή μ΄ˆμ°½κΈ°μ—λŠ” κ°„λ‹¨ν•œ HTMLλ§Œμ„ μ „λ‹¬ν–ˆμ§€λ§Œ, μ΄μ œλŠ” 사싀상 λ°”μ΄νŠΈλ‘œ ν‘œν˜„λ˜λŠ” λͺ¨λ“  데이터(html, css, js, 이미지 λ“±λ“±)을 전달할 수 μžˆλ‹€.
  • 버전은 0.9 - 1.0 - 1.1 - 2.0 - 3.0 μˆœμ„œλ‘œ λ°œμ „ν–ˆμœΌλ©°, 사싀상 1.1 버전이 제일 μ€‘μš”ν•˜λ‹€.(기본적인 μŠ€νŽ™λ“€μ΄ 많이 κ°–μΆ°μ‘Œλ‹€.)
  • 이후 2.0, 3.0은 μ„±λŠ₯ κ°œμ„ μ— 초점이 λ§žμΆ°μ Έμžˆλ‹€.(λ¬Όλ‘  3.0은 TCPκ°€ μ•„λ‹Œ UDP μœ„μ—μ„œ λ™μž‘ν•œλ‹€λŠ” 차별점이 μ‘΄μž¬ν•œλ‹€.)

HTTPS

  • Hypertext Transfer Protocol Secure; 즉, HTTP + κ°•ν•œ λ³΄μ•ˆμ΄λΌκ³  μƒκ°ν•˜λ©΄ λœλ‹€.

❔ HTTPμ—μ„œ HTTPS둜 Sκ°€ λΆ™λŠ” κ³Όμ •(ssl μΈμ¦μ„œ λ°œκΈ‰μ˜ 일련 κ³Όμ •)

  • 인터넷 μƒμ—μ„œ μ›Ή λΈŒλΌμš°μ €(Client)와 μ›Ή μ„œλ²„(Server)간에 데이터λ₯Ό μ•ˆμ „ν•˜κ²Œ μ£Όκ³  λ°›κΈ° μœ„ν•΄μ„œλŠ” μ„œλ‘œ μ•”ν˜Έν™”ν•˜μ—¬ 톡신을 ν•΄μ•Όν•œλ‹€.
  • SSL(Secure Socket Layer)은 μ›Ή λΈŒλΌμš°μ €μ™€ μ„œλ²„κ°„ μ•”ν˜Έν™” 톡신을 μœ„ν•œ ν”„λ‘œν† μ½œμ΄λ©°, SSLμΈμ¦μ„œλŠ” SSL κΈ°λ°˜ν•˜μ—μ„œ λΈŒλΌμš°μ €μ™€ μ„œλ²„κ°€ μ•”ν˜Έν™” 톡신을 κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” μΈμ¦μ„œ(제3의 신뒰기간이 μΈμ¦ν•œ)λ₯Ό μ˜λ―Έν•œλ‹€.

SSLμΈμ¦μ„œμ˜ 3가지 κΈ°λŠ₯

  • 정보 유좜 방지: ν‘œμ€€ μ•”ν˜Έν™” 기법을 톡해 μ „μ†‘μžμ˜ 정보λ₯Ό μ•ˆμ „ν•˜κ²Œ 전솑
  • κΈ°μ—… 싀체성 확인: 예λ₯Ό λ“€μ–΄, μΏ νŒ‘μ— 주문을 ν•  λ•Œ μΏ νŒ‘μ΄λΌλŠ” κΈ°μ—…μ˜ 싀체성(μ‚¬μ—…μž 등둝과 같은)을 확인 후에 μΏ νŒ‘μ— SSL μΈμ¦μ„œλ₯Ό λ°œκΈ‰
  • μœ„μ‘°μ‚¬μ΄νŠΈ 방지: μ‚¬μ΄νŠΈμ˜ μ§„μœ„ μ—¬λΆ€λ₯Ό νŒλ‹¨

μ•”ν˜Έν™”

λΈŒλΌμš°μ €κ°€ λ©”μ‹œμ§€λ₯Ό μ•”ν˜Έν™”ν•˜μ—¬ μ„œλ²„μ— μ „μ†‘ν•˜λ©΄, μ„œλ²„λŠ” μ•”ν˜Έν™”ν‚€(λΉ„λ°€ν‚€)둜 μ•”ν˜Έν™”λœ λ©”μ‹œμ§€λ₯Ό 해독(λ³΅ν˜Έν™”)ν•˜λŠ” 과정이 이뀄진닀.

  • λŒ€μΉ­ν‚€ μ•”ν˜Έν™”: λ©”μ‹œμ§€λ₯Ό μ•”ν˜Έν™”ν•  λ•Œ μ‚¬μš©ν•˜λŠ” 비밀킀와 λ©”μ‹œμ§€λ₯Ό λ³΅ν˜Έν™”ν•  λ•Œ μ‚¬μš©ν•˜λŠ” λΉ„λ°€ν‚€κ°€ 같은 경우

이 λ•Œ, κ·Έλ ‡λ‹€λ©΄ 같은 λΉ„λ°€ν‚€λ₯Ό μ–΄λ–»κ²Œ λΈŒλΌμš°μ €μ™€ μ„œλ²„κ°€ 전달할지에 λŒ€ν•œ λ¬Έμ œκ°€ λ°œμƒν•œλ‹€.
USB λ“±μ˜ μ €μž₯μž₯치둜 μ „λ‹¬ν•˜λŠ” 방법, λΉ„λ°€ν‚€ 자체λ₯Ό μ•”ν˜Έν™”ν•˜μ—¬ μ „λ‹¬ν•˜λŠ” 방법 등이 μžˆλŠ”λ° μ΄λŠ” ν˜„μ‹€μ μœΌλ‘œ 해결책이 μ•„λ‹ˆλ‹€.
ν•΄μ„œ λ“±μž₯ν•œ 것이 λΉ„λŒ€μΉ­ν‚€ μ•”ν˜Έν™” ν˜Ήμ€ κ³΅κ°œν‚€ μ•”ν˜Έν™”λΌκ³  λΆˆλ¦¬λŠ” 방식이닀.

  • λΉ„λŒ€μΉ­ν‚€ μ•”ν˜Έν™”(κ³΅κ°œν‚€ μ•”ν˜Έν™”): μ†‘μ‹ μžμ™€ μˆ˜μ‹ μžκ°€ 각각 2개의 ν‚€λ₯Ό μƒμ„±ν•˜λŠ”λ°, ν•˜λ‚˜λŠ” κ°œμΈν‚€μ΄κ³  λ‚˜λ¨Έμ§€ ν•˜λ‚˜λŠ” κ³΅κ°œν‚€
    • κ³΅κ°œν‚€λ‘œ μ•”ν˜Έν™”ν•˜λ©΄ κ°œμΈν‚€λ‘œ λ³΅ν˜Έν™”κ°€ κ°€λŠ₯ν•˜κ³ , κ°œμΈν‚€λ‘œ μ•”ν˜Έν™”ν•˜λ©΄ κ³΅κ°œν‚€λ‘œ λ³΅ν˜Έν™”κ°€ κ°€λŠ₯ν•˜λ‹€.
    • 즉, λΈŒλΌμš°μ €κ°€ μ„œλ²„μ˜ κ³΅κ°œν‚€λ‘œ μ•”ν˜Έν™”λ₯Ό ν•˜μ—¬ λ©”μ‹œμ§€λ₯Ό 보내고, μ„œλ²„λŠ” μ„œλ²„μ˜ κ°œμΈν‚€λ‘œ λ³΅ν˜Έν™”λ₯Ό μ§„ν–‰ν•œλ‹€.
    • λ°˜λŒ€λ‘œ μ„œλ²„λŠ” λΈŒλΌμš°μ €μ˜ κ³΅κ°œν‚€λ‘œ μ•”ν˜Έν™”, λΈŒλΌμš°μ €λŠ” λΈŒλΌμš°μ €μ˜ κ°œμΈν‚€λ‘œ λ³΅ν˜Έν™”ν•˜μ—¬ 더 μ•ˆμ „ν•œκ²Œ 데이터λ₯Ό 주고받을 수 μžˆλ‹€.

  • μ„œλ²„κ°€ μ„œλ²„μ˜ κ³΅κ°œν‚€(SSL μΈμ¦μ„œ) 솑신
  • λΈŒλΌμš°μ €κ°€ μ„œλ²„μ˜ κ³΅κ°œν‚€λ₯Ό 검증(인증기관에 검증을 μš”μ²­)

    ------검증 μ™„λ£Œ ν›„-------

  • λΈŒλΌμš°μ €κ°€ λŒ€μΉ­ν‚€ 생성
  • λΈŒλΌμš°μ €λŠ” κ²€μ¦λœ μ„œλ²„μ˜ κ³΅κ°œν‚€λ‘œ λŒ€μΉ­ν‚€λ₯Ό μ•”ν˜Έν™” 및 솑신
  • μ„œλ²„λŠ” μ„œλ²„μ˜ κ°œμΈν‚€λ‘œ λŒ€μΉ­ν‚€λ₯Ό λ³΅ν˜Έν™”

    ------λΈŒλΌμš°μ €μ™€ μ„œλ²„κ°€ λŒ€μΉ­ν‚€λ₯Ό μ•ˆμ „ν•˜κ²Œ κ΅ν™˜-------

  • 이제 λΈŒλΌμš°μ €λŠ” λŒ€μΉ­ν‚€λ‘œ λ©”μ‹œμ§€ μ•”ν˜Έν™” 및 전솑
  • μ„œλ²„λŠ” λŒ€μΉ­ν‚€λ‘œ μˆ˜μ‹ ν•œ λ©”μ‹œμ§€λ₯Ό λ³΅ν˜Έν™”

WWW

  • World Wide Web의 μ•½μž. ν”νžˆ web(μ›Ή)으둜 λΆ€λ₯Έλ‹€.
  • 인터넷에 μ—°κ²°λœ μ‚¬μš©μžλ“€μ΄ μ„œλ‘œμ˜ 정보λ₯Ό κ³΅μœ ν•  수 μžˆλŠ” 곡간을 μ˜λ―Έν•œλ‹€.
  • 인터넷과 λΉ„μŠ·ν•œ 의미둜 μ‚¬μš©λ˜μ§€λ§Œ, μ •ν™•νžˆ ν•˜μžλ©΄ 웹은 μΈν„°λ„·μ˜ μ—¬λŸ¬ μ„œλΉ„μŠ€λ“€ 쀑 ν•˜λ‚˜μ— ν•΄λ‹Ήν•œλ‹€..
  • ν•˜μ§€λ§Œ ν˜„λŒ€μ—λŠ” μœ μ‚¬ν•˜κ²Œ μ‚¬μš©ν•΄λ„ 될 만큼 웹이 μΈν„°λ„·μ˜ κ°€μž₯ 큰 뢀뢄을 μ°¨μ§€ν•˜κ³  μžˆλ‹€.

URI

  • Uniform Resource Identifier의 μ•½μž. 즉, ν†΅ν•©λœ μžμ› μ‹λ³„μž(?) μ •λ„μ˜ λŠλ‚Œ.
  • URI, URL(Locator), URN(Name)κ³Ό ν”νžˆ ν—·κ°ˆλ¦°λ‹€.
  • URIλŠ” URL, URN을 ν¬κ΄„ν•˜λŠ” 더 넓은 κ°œλ…μ΄λ©° URL은 λ¦¬μ†ŒμŠ€κ°€ μžˆλŠ” μœ„μΉ˜, URN은 λ¦¬μ†ŒμŠ€μ˜ 이름을 λ‚˜νƒ€λ‚Έλ‹€.
  • κ·ΈλŸ¬λ‚˜ 사싀상 URNλ§ŒμœΌλ‘œλŠ” μ‹€μ œ λ¦¬μ†ŒμŠ€λ₯Ό μ°ΎλŠ” 방법은 μ–΄λ ΅κ³  λ³΄νŽΈν™”λ˜μ§€ μ•Šμ•˜λ‹€.(ν•˜λ‚˜ν•˜λ‚˜ 맡핑을 ν•΄λ‘¬μ•Όν•˜κΈ°μ—)
  • λ”°λΌμ„œ κ°„λ‹¨ν•˜κ²Œ URI = URL + URN = URL + 0 κ³Ό 같은 λŠλ‚Œμ΄λΌ 생각해도 λœλ‹€.

DOM

  • Document Object Model의 μ•½μžλ‘œ μ›Ή νŽ˜μ΄μ§€μ— λŒ€ν•œ μΈν„°νŽ˜μ΄μŠ€
  • λ‹¨μˆœν•˜κ²Œ μƒκ°ν•˜λ©΄ HTML의 μš”μ†Œλ“€μ΄ 객체 기반으둜 ν‘œν˜„λ˜μ–΄ 트리 ν˜•νƒœλ‘œ μ €μž₯λ˜λŠ” 것이닀.
  • 이 λ•Œ, DOM은 html이 μ•„λ‹ˆκ³  λ˜ν•œ λ Œλ” νŠΈλ¦¬μ™€λŠ” λ‹€λ₯΄λ‹€.
    • html에 head, bodyκ°€ 없어도 λΈŒλΌμš°μ €λŠ” μ•Œμ•„μ„œ κ΅μ •ν•˜μ—¬ DOMμ—μ„œλŠ” head, body 객체가 μƒκ²¨λ‚œλ‹€.
    • λ˜ν•œ, JavaScriptλ₯Ό 톡해 λ™μ μœΌλ‘œ DOM이 μˆ˜μ •λ  λ•Œ DOM은 λ³€ν•˜μ§€λ§Œ μ‹€μ œ html이 λ³€ν•˜μ§€λŠ” μ•ŠλŠ”λ‹€.
    • λ Œλ” νŠΈλ¦¬λŠ” DOMκ³Ό CSSOM이 합쳐져 ν˜•μ„±λœ κ²ƒμœΌλ‘œ λ§Œμ•½ β€˜display: noneβ€™μ΄λΌλŠ” 속성이 μžˆλ‹€λ©΄ DOMμ—λŠ” μžˆμ§€λ§Œ λ Œλ” νŠΈλ¦¬μ—λŠ” μ—†λ‹€.

html

  • HyperText Markup Language의 μ•½μžλ‘œ μ–΄λ–€ νŽ˜μ΄μ§€μ—μ„œ λ‹€λ₯Έ νŽ˜μ΄μ§€λ‘œ 이동할 수 μžˆλ„λ‘ ν•˜λŠ” κΈ°λŠ₯을 가진 λ¬Έμ„œλ₯Ό μ˜λ―Έν•œλ‹€.
  • 사싀상 httpλ₯Ό 톡해 ν΄λΌμ΄μ–ΈνŠΈμ™€ μ„œλ²„κ°€ μ£Όκ³  λ°›λŠ” κ°€μž₯ 기본적인 데이터이닀.

Nodejs - https λͺ¨λ“ˆ

  • nodeμ—μ„œ μ œκ³΅ν•˜λŠ” λͺ¨λ“ˆλ‘œ κ°„λ‹¨ν•œ μ„œλ²„λ₯Ό λ§Œλ“€ μˆ˜λ„ 있고 μ„œλ²„μ— μš”μ²­μ„ 보낼 μˆ˜λ„ μžˆλ‹€.
  • μ„œλ²„μ— 데이터λ₯Ό μš”μ²­ν•  λ•ŒλŠ” μ•„λž˜μ™€ 같이 μ‚¬μš©ν•œλ‹€.
  • 기본적으둜 get method둜 GET μš”μ²­μ„ 보낼 수 있고, request methodμ—μ„œ 첫 번째 νŒŒλΌλ―Έν„°μΈ options 객체에 μš”μ²­ 정보λ₯Ό λ‹΄μ•„ GET μ΄μ™Έμ˜ μš”μ²­μ„ 보낼 μˆ˜λ„ μžˆλ‹€.
https.get(url, (res) => {
  // ...
})

https.request(options, (res) => {
  // ...
})

cheerio

  • html νŒŒμ‹±μ„ μœ„ν•œ 라이브러리 λͺ¨λ“ˆ
  • html ν˜•νƒœμ˜ κ΅¬μ‘°μ—μ„œ μ›ν•˜λŠ” νƒœκ·Έ, 속성(attribute)의 value듀을 μ‰½κ²Œ κ°€μ Έμ˜¬ 수 있게 도와쀀닀.

참고자료

πŸ“ μš”μ•½ 및 ν•˜λ£¨ 간단 회고

μ™„λ²½ν•˜μ§„ μ•Šμ§€λ§Œ, νŠΉμ • url의 정보듀을 κ°€μ Έμ˜€κ³  ν•΄λ‹Ή html λ‚΄μ—μ„œ λ˜λ‹€μ‹œ μš”μ²­ν•΄μ•Όν•  src듀에 λŒ€ν•œ 정보도 κ°€μ Έμ˜€λŠ” http 뢄석기 ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€μ—ˆλ‹€!
μΆ”κ°€λ‘œ 캐싱도 κ΅¬ν˜„ν•΄λ³΄κ³  μ‹ΆκΈ΄ν–ˆλŠ”λ°β€¦ 일단 ν•΄μ•Όν•  게 λ§ŽμœΌλ‹ˆ 체크해두고 λ‹€μŒμ— κΌ­ κ΅¬ν˜„ν•˜λ € ν•œλ‹€. ν˜„μž¬λŠ” κ°„λ‹¨ν•˜κ²Œ cache 클래슀λ₯Ό ν•˜λ‚˜ λ§Œλ“€κ³  λ°°μ—΄ ν•˜λ‚˜μ— 이전에 μš”μ²­ν–ˆλ˜ url듀을 λ‹΄μ•„μ„œ μ²΄ν¬ν•˜λŠ” μ‹μœΌλ‘œ ν•˜λ©΄ 될 것 κ°™λ‹€. 또, λΉ„λ™κΈ°λ‘œ 일정 μ‹œκ°„ 뒀에 μ•Œμ•„μ„œ 배열이 λΉ„μ›Œμ§€λ„λ‘ ν•˜μ—¬ μΊμ‹œλ“€μ΄ μ§€μ›Œμ§€λ„λ‘ ν•˜λ©΄ μ•„μ£Ό 어렡진 μ•Šκ²Œ κ΅¬ν˜„λ  것 κ°™λ‹€!!! 였늘 ν•˜λ£¨λ„ 정말 정말 μ—΄μ‹¬νžˆ μˆ˜κ³ ν–ˆλ‹€!

였늘의 μž˜ν•œ 점

  • μΆ”κ°€ μ œμ™Έν•˜κ³  λ―Έμ…˜ κ΅¬ν˜„ μ™„μ„±ν•œ 점
  • μ˜€λŠ˜λ„ 정말 λ°₯, 잠 λΉΌκ³  ν”„λ‘œκ·Έλž˜λ°λ§Œ ν•œ λ‚˜ μžμ‹ 
  • κ·Έ 와쀑에 κ°•μ˜λ„ λ“£κ³  κ°œλ… 정리도 ν•˜κ³  μ΄λ ‡κ²Œ 일지도 μ λŠ” λ‚˜ μžμ‹ β€¦ λΏŒλ“―ν•˜λ‹€.

였늘의 μ•„μ‰¬μš΄ 점

  • κ·Έλ‚˜λ§ˆ μΆ”κ°€λ―Έμ…˜..?! λ‹€μŒμ— κ³„νšν•œλŒ€λ‘œ κ΅¬ν˜„ν•˜μž!