์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- ๋ ธ๋๊ต๊ณผ์
- for~in/for~of
- https://developer-talk.tistory.com/299
- Beesbeesbees
- children vs childrenNodes
- toString#String
- JS#3์ผ์ฐจ๋ฌ๋ฆฌ์#์ด๋ฐ์ธ๋ฐ#์๊ฐ๊ธ๋ฐฉ~
- https://dasima.xyz/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%A0%9C%EA%B3%B1-math-pow-%EA%B3%84%EC%82%B0/
- ใทใ
- ์๋ฐ์คํฌ๋ฆฝํธ#JS#var#let#const#undefined#null
- User Flow
- react
- CSS
- UI
- redux์ํ์ ์ง
- ์๋ฐ์คํฌ๋ฆฝํธ
- js
- ํท๊ฐ๋ฆฐ๋ค~
- UX
- dom
- https://lo-victoria.com/introduction-to-redux-toolkit-for-beginners
- https://www.daleseo.com/js-array-slice-splice/
- ๋ด์ฅ๊ณ ์ฐจํจ์
- ์๋ฐ์คํฌ๋ฆฝํธ#JS#slice#splice
- removeCookie
- variable#function
- slice/splice/split
- ์๋ฐ์คํฌ๋ฆฝํธ#์กฐ๊ฑด๋ฌธ#๋ฌธ์์ด
- cmarket
- @redux-toolkit
- Today
- Total
Daily Front_Minhhk
Optimization ์ต์ ํ ๋ณธ๋ฌธ
๐ฅถ ์ต์ ํ, optimization
- ์ฃผ์ด์ง ์ํฉ์์ ์ํ๋ ๊ฐ์ฅ ์๋ง์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋๋ก ์ฒ๋ฆฌํ๋ ๊ณผ์ .
- ์ต์ ํ๋ ํ์ฉ๋ ์์์ ํ๊ณ ๋ด์์ ์ฃผ์ด์ง ์๊ตฌ์ฌํญ์ ๋ง์กฑ์ํค๋ฉด์ ์ต์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ป๋ ๊ณผ์ ์ด๋ค.
์ปดํจํฐ ๊ณตํ์์์ ์ต์ ํ :
์ต์ํ์ ๋ฆฌ์์ค๋ฅผ ์๋ชจํ๋ฉด์ ๊ฐ๋ฅํ ํ ๋น ๋ฅด๊ฒ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋๋ก ํ๋ ๊ฒ์ ์๋ฏธ!
์ต์ ํ์ ํ์์ฑ ๋ฐ ํจ๊ณผ
1. ์ดํ๋ฅ ๊ฐ์
2. ์ ํ์จ ์ฆ๊ฐ
3. ์์ต ์ฆ๋
4. ์ฌ์ฉ์ ๊ฒฝํ(UX) ํฅ์
๐HTML, CSS ์ฝ๋ ์ต์ ํํ๊ธฐ
1. HTML ์ต์ ํ ๋ฐฉ๋ฒ
(1) DOM ํธ๋ฆฌ ๊ฐ๋ณ๊ฒ ๋ง๋ค๊ธฐ
(2) ์ธ๋ผ์ธ ์คํ์ผ ์ฌ์ฉํ์ง ์๊ธฐ
2. CSS ์ต์ ํ ๋ฐฉ๋ฒ
(1) ์ฌ์ฉํ์ง ์๋ CSS ์ ๊ฑฐํ๊ธฐ
(2) ๊ฐ๊ฒฐํ ์ ๋ ํฐ ์ฌ์ฉํ๊ธฐ
๐๋ฆฌ์์ค ๋ก๋ฉ ์ต์ ํํ๊ธฐ
1. CSS ํ์ผ ๋ถ๋ฌ์ค๊ธฐ → CSSOM ํธ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ ๋น ๋ฅด๊ฒ ๊ตฌ์ฑํ ์ ์๋๋ก HTML ๋ฌธ์ ์ต์๋จ์ ๋ฐฐ์น
2. JavaScript ํ์ผ ๋ถ๋ฌ์ค๊ธฐ → ์คํฌ๋ฆฝํธ ์์ฑ์ด ๋๋ ๋๊น์ง DOMํธ๋ฆฌ ์์ฑ์ด ์ค๋จ๋์ด ๋ ๋๋ง์ด ๋๋ ค์ ธ์ DOMํธ๋ฆฌ ์์ฑ ํ์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ถ๋ฌ์ฌ ์ ์๋๋ก ์ตํ๋จ์ ์์นํ๋๋ก ํ๋ค.
๐๋ธ๋ผ์ฐ์ ์ด๋ฏธ์ง ์ต์ ํํ๊ธฐ
1. ์ด๋ฏธ์ง ์คํ๋ผ์ดํธ
- ์ด๋ฏธ์ง ์คํ๋ผ์ดํธ ๊ธฐ๋ฒ์ ์ฌ๋ฌ ๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ๋ชจ์ ํ๋์ ์คํ๋ผ์ดํธ ์ด๋ฏธ์ง๋ก ๋ง๋ค๊ณ CSS์ background-position์์ฑ์ ์ฌ์ฉํด ์ด๋ฏธ์ง์ ์ผ์ ๋ถ๋ถ๋ง ํด๋์ค ๋ฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
- ํ๋์ ์ด๋ฏธ์ง๋ฅผ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง๋ก ์ฌ์ฉํ๋, ํ์ํ๊ณ ์ถ์ ๋ถ๋ถ์ ๋ง์ถฐ width, height, background-position ์์ฑ์ ์ฃผ์ด ์์ด์ฝ์ ๋ง๋ญ๋๋ค
2. ์์ด์ฝ ํฐํธ ์ฌ์ฉํ๊ธฐ
(1) CDN์ผ๋ก ์ฌ์ฉํ๊ธฐ
(2) Font Awesome ๋ชจ๋ ์ค์นํ๊ธฐ
(3) WebP ๋๋ AVIF ์ด๋ฏธ์ง ํฌ๋งท ์ฌ์ฉํ๊ธฐ → ์ฉ๋๊ฐ์, ๋จ ํธํ๋ฌธ์ ๋ฐ์
์ด๋ฏธ์ง ์ต์ ํ๋ฅผ ์ํด ์ ํต์ ์ผ๋ก ์ฌ์ฉํ๋ JPEG ๋๋ PNG ํ์์ด ์๋ ์๋กญ๊ฒ ๋ฑ์ฅํ ์ด๋ฏธ์ง ํฌ๋งท์ธ WebP ๋๋ AVIF๋ฅผ ์ฌ์ฉํ์ฌ ์ฉ๋์ ๋์ฑ ๊ฐ์์ํฌ ์ ์์ต๋๋ค. WebP๋ PNG์ ๋น๊ตํด 26% ์ฉ๋์ด ๊ฐ์๋๋ฉฐ JPEG์ ๋น๊ตํ์ ๋ 25-35% ๋ ๊ฐ์๋ฉ๋๋ค. AVIF๋ JPEG์ ๋น๊ตํ์ ๋ ๋ฌด๋ ค ์ฉ๋์ 50%๊ฐ ๊ฐ์๋๋ฉฐ WebP์ ๋น๊ตํ์ ๋ 20% ๊ฐ์๋ฉ๋๋ค.
๐CDN ์ฌ์ฉํ๊ธฐ
- CDN์ ์ ์ ๊ฐ ๊ฐ๊น์ด ๊ณณ์ ์์นํ ๋ฐ์ดํฐ ์ผํฐ(์๋ฒ)์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ต๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ฐ์ดํฐ๊ฐ ์ ๋ฌ๋๊ธฐ ์ํด ๊ฑฐ์ณ์ผํ๋ ์๋ฒ์ ๊ฐฏ์๊ฐ ํฌ๊ฒ ์ค๊ธฐ ๋๋ฌธ์ ๋ก๋ฉ ์๋๊ฐ ๋นจ๋ผ์ง๋๋ค.
์บ์ ์ฌ์ฉํ๊ธฐ
์บ์(Cache)๋ ๋ค์ด๋ก๋ ๋ฐ์ ๋ฐ์ดํฐ๋ ๊ฐ์ ๋ฏธ๋ฆฌ ๋ณต์ฌํด ๋๋ ์์ ์ฅ์๋ฅผ ๋ปํจ
- ์๋ฒ์์ ์๋ต์ ๋ณด๋ด์ค ๋ ์ด๋ฏธ์ง ํ์ผ๊ณผ ํจ๊ป ํค๋์ Cache-Control์ ์์ฑํด์ ๋ณด๋ธ๋ค.
- ๋๋ฒ์งธ ์์ฒญ๋ถํฐ๋ ์บ์๋ฅผ ์ฐ์ ์กฐํํ๋ค. ์ด๋ ์บ์๊ฐ ์ ํจํ๋ค๋ฉด ์บ์์์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ ์ฌ์ฉํ๋ค.
- ์บ์๊ฐ ์ ํจํ์ง ์๋ค๋ฉด ์๋ฒ์์ ๋ค์ ์ด๋ฏธ์ง๋ฅผ ๋ฐ์์ค๊ฒ ๋๋ค.
- ์ด๋ ์ ํจ ์๊ฐ์ ์ง๋ฌ์ง๋ง ์บ์์ ์ ์ฅ๋์ด์๋ ์ด๋ฏธ์ง์ ๋ฐ์์์ผ ํ๋ ์ด๋ฏธ์ง๊ฐ ๊ฐ๋ค๋ฉด ์บ์ ๊ฒ์ฆ ํค๋์ ์กฐ๊ฑด๋ถ ์์ฒญ ํค๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
์ด๋ ๊ฒ ๋ธ๋ผ์ฐ์ ์บ์๋ฅผ ํ์ฉํ์ ๋์ ํจ๊ณผ
- ์บ์๊ฐ ์ ํจํ ์๊ฐ ๋์ ๋คํธ์ํฌ ๋ฆฌ์์ค๋ฅผ ์๋ ์ ์์
- ํ์ผ์ ๋ค์ ๋ฐ์์ฌ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ธ๋ผ์ฐ์ ๋ก๋ฉ์ด ๋นจ๋ผ์ง
- ๋ก๋ฉ์ด ๋นจ๋ผ์ง ๋งํผ ๋น ๋ฅธ ์ฌ์ฉ์ ๊ฒฝํ ์ ๊ณต ๊ฐ๋ฅ
์บ์ ๊ฒ์ฆ ํค๋
์บ์์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ์๋ฒ์ ๋ฐ์ดํฐ๊ฐ ๋์ผํ์ง ํ์ธํ๊ธฐ ์ํ ์ ๋ณด๋ฅผ ๋ด์ ์๋ต ํค๋
- Last-Modified : ๋ฐ์ดํฐ๊ฐ ๋ง์ง๋ง์ผ๋ก ์์ ๋ ์์ ์ ์๋ฏธํ๋ ์๋ต ํค๋๋ก, ์กฐ๊ฑด๋ถ ์์ฒญ ํค๋์ธ If-Modified-Since ์ ๋ฌถ์ด์ ์ฌ์ฉํฉ๋๋ค.
- Etag : ๋ฐ์ดํฐ์ ๋ฒ์ ์ ์๋ฏธํ๋ ์๋ต ํค๋๋ก, ์กฐ๊ฑด๋ถ ์์ฒญ ํค๋์ธ If-None-Match ์ ๋ฌถ์ด์ ์ฌ์ฉํฉ๋๋ค.
์กฐ๊ฑด๋ถ ์์ฒญ ํค๋
์บ์์ ๋ฐ์ดํฐ์ ์๋ฒ์ ๋ฐ์ดํฐ๊ฐ ๋์ผํ๋ค๋ฉด ์ฌ์ฌ์ฉํ๊ฒ ํด๋ฌ๋ผ๋ ์๋ฏธ์ ์์ฒญ ํค๋
- If-Modified-Since : ์บ์๋ ๋ฆฌ์์ค์ Last-Modified ๊ฐ ์ดํ์ ์๋ฒ ๋ฆฌ์์ค๊ฐ ์์ ๋์๋์ง ํ์ธํ๊ณ , ์์ ๋์ง ์์๋ค๋ฉด ์บ์๋ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- If-None-Match : ์บ์๋ ๋ฆฌ์์ค์ ETag ๊ฐ๊ณผ ํ์ฌ ์๋ฒ ๋ฆฌ์์ค์ ETag ๊ฐ์ด ๊ฐ์์ง ํ์ธํ๊ณ , ๊ฐ์ผ๋ฉด ์บ์๋ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
1. ์ฒซ๋ฒ์งธ ์์ฒญ์์ ์บ์ ์ ํจ์๊ฐ์ด 60์ด์ธ ์ด๋ฏธ์ง ํ์ผ์ ๊ฐ์ด ๋ฐ์์ด. ์ด๋ Last-Modified ํค๋์ ๋ด๊ธด ๋ด์ฉ๋ ์บ์์ ํจ๊ป ์ ์ฅ (์๋ฒ์ ํ์ผ ๋ฒ์ ์ ์๋ฏธํ๋ Etagํค๋์ ๋ด๊ธด ๋ด์ฉ๋ ์บ์์ ํจ๊ป ์ ์ฅ)
2. ์บ์ ์ ํจ์๊ฐ์ ์ง๋ ํ ๋๋ฒ์งธ ์์ฒญ์์
- If-Modified-Since๋ฅผ ์์ฑํด ์ ์ฅํด๋ Last-Modified ๊ฐ๊ณผ ํจ๊ป ์์ฒญ์ ๋ณด๋ธ๋ค. ์ด ๊ฐ์ ์ด์ฉํด ์๋ฒ๋ฐ์ดํฐ์ ์ต์ข ์์ ์ผ๊ณผ ์บ์์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ์์ ์ผ์ด ๊ฐ์์ง ํ์ธํ๋ค. (If-None-Match๋ฅผ ์์ฑํ๊ณ ์บ์์ ํจ๊ป ์ ์ฅํด๋์๋ Etag ๊ฐ์ ๋ด์ ์์ฒญ์ ๋ณด๋ด์ด ์ด ๊ฐ์ ์ด์ฉํด ์๋ฒ ๋ฐ์ดํฐ์ Etag์ ์บ์์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ Etag๋ฅผ ๋น๊ตํฉ๋๋ค. ๋ ๋ฐ์ดํฐ๊ฐ ๋์ผํ ๋ฐ์ดํฐ๋ผ๋ฉด ๋ Etag๊ฐ์ด ๊ฐ์์ผ ํฉ๋๋ค.)
3. ๋ฐ์ดํฐ๊ฐ ์์ ๋์ง ์์์ ๊ฒฝ์ฐ 304 Not Modified ์๋ต.์บ์ ๋ฐ์ดํฐ์ ์ ํจ์๊ฐ์ด ๊ฐฑ์ ๋์ด ์ฌ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
ํธ๋ฆฌ์์ดํน(Tree Shaking)์ด๋?
๋ง ๊ทธ๋๋ก ๋๋ฌด๋ฅผ ํ๋ค์ด ์๊ฐ์ง๋ฅผ ํธ์ด๋ด๋ฏ ๋ถํ์ํ ์ฝ๋๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ
1. JavaScript ํ์ผ์ ํฌ๊ธฐ ์ฆ๊ฐ
- HTTP ์์ฒญ ์ ๋ํ ๋ฐ์คํฌํ์์ 155.6%, ๋ชจ๋ฐ์ผ์์ 425.0% ์ฆ๊ฐํจ. ํฌ๊ธฐ๊ฐ ํจ์ฌ ์ปค์ง JavaScript ํ์ผ์ด ๋์ด๋ ์์ฒญ ํ์๋งํผ ๋ ์ค๊ฐ๋ ๊ฒ์ด๋, ๋คํธ์ํฌ ๋ฆฌ์์ค ์๋ชจ๊ฐ ๊ทธ๋งํผ ์ปค์ก๋ค.
2. JavaScript ํ์ผ์ ์คํ ์๊ฐ ์ฆ๊ฐ
JavaScript ํธ๋ฆฌ์์ดํน
1. ํ์ํ ๋ชจ๋๋ง import ํ๊ธฐ
import { useState, useEffect } from 'react'
๋ถ๋ฌ์ค์ง ์์ ์ฝ๋๋ ๋น๋ํ ๋ ์ ์ธ๋๋ฏ๋ก ์ฝ๋์ ํฌ๊ธฐ๋ฅผ ์ค์ผ ์ ์๊ฒ ๋ฉ๋๋ค.
2. Babelrc ํ์ผ ์ค์ ํ๊ธฐ
{
“presets”: [
[
“@babel/preset-env”,
{
"modules": false
}
]
]
}
Babel : ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ด ๊ตฌํ ๋ธ๋ผ์ฐ์ ์๋ ํธํ ๊ฐ๋ฅํ๋๋ก ES5 ๋ฌธ๋ฒ์ผ๋ก ๋ณํ.
es5๋ import๋ฅผ ์ง์ํ์ง ์์ commonJS๋ฌธ๋ฒ์ require๋ก ๋ณ๊ฒฝ์ํจ๋ค.
require์ export๋๋ ๋ชจ๋ ๋ชจ๋์ ๋ถ๋ฌ์ค๊ธฐ ๋๋ฌธ์ ํ์ํ์ง ์์ ๋ชจ๋๊น์ง ๋ชจ๋ ๋ถ๋ฌ์ค๊ฒ ๋๋ค.
์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํ ์ฝ๋!!
modules๊ฐ์ true๋ก ์ค์ ํ๋ฉด ํญ์ ES5 ๋ฌธ๋ฒ์ผ๋ก ๋ณํ
3. sideEffects ์ค์ ํ๊ธฐ
const crews = ['kimcoding', 'parkhacker']
const addCrew = function (name) {
crews.push(name)
}
addCrewํจ์๋ ํจ์ ์ธ๋ถ์ ์๋ ๋ฐฐ์ด์ธ crews๋ฅผ ๋ณ๊ฒฝ์ํค๋ ํจ์์ ๋๋ค.
ํด๋น ํจ์๋ ์ธ๋ถ์ ์ํฅ์ ์ฃผ์ง๋ ๋ฐ์ง๋ ์๋ ํจ์, ์์ ํจ์๊ฐ ์๋๊ธฐ ๋๋ฌธ์ ํธ๋ฆฌ์์ดํน์ ํตํด ์ ์ธํ๋ ๊ฒฝ์ฐ ๋ฌธ์ ๊ฐ ์๊ธธ ์๋ ์๋ค๊ณ ํ๋จํด ์นํฉ์ ์ด ์ฝ๋๋ฅผ ์ ์ธ์ํค์ง ์๋๋ค.
์ด๋ด ๋ package.json ํ์ผ์์ sideEffects๋ฅผ ์ค์ ํ์ฌ ์ฌ์ด๋ ์ดํํธ๊ฐ ์๊ธฐ์ง ์์ ๊ฒ์ด๋ฏ๋ก ์ฝ๋๋ฅผ ์ ์ธ์์ผ๋ ๋จ์ ์นํฉ์๊ฒ ์๋ ค์ค ์ ์์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด์์ ์ฌ์ด๋ ์ดํํธ๊ฐ ๋ฐ์ํ์ง ์์ ๊ฒ์ด๋ค.
{
"name": "tree-shaking",
"version": "1.0.0",
"sideEffects": false
}
ํน์ ์๋์ ๊ฐ์ด ์์ฑํ์ฌ ํน์ ํ์ผ์์๋ ๋ฐ์ํ์ง ์์ ๊ฒ์ด๋ค.
{
"name": "tree-shaking",
"version": "1.0.0",
"sideEffects": ["./src/components/NoSideEffect.js"]
}
4. ES6 ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ ๋ชจ๋ ์ฌ์ฉํ๊ธฐ
ES5 ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ ๋ชจ๋์ ํต์งธ๋ก ์ฌ์ฉํ๋ ์ํฉ์ด๋ผ๋ฉด ์๊ดX
ES5 ์ผ๋ถ๋ง ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ํด๋น ๋ชจ๋์ ๋์ฒดํ ์ ์์ผ๋ฉด์ ES6๋ฅผ ์ง์ํ๋ ๋ค๋ฅธ ๋ชจ๋์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
ES6 ๋ฌธ๋ฒ์ ์ฌ์ฉํ๋ ๋ชจ๋์ ์ฌ์ฉํ๋ฉด ํด๋น ๋ชจ๋์์๋ ํ์ํ ๋ถ๋ถ๋ง import ํด์ ์ฌ์ฉํ์ง ์๋ ์ฝ๋๋ ๋น๋ํ ๋ ์ ์ธ๋๊ธฐ ๋๋ฌธ!
Lighthouse
์ฌ์ดํธ๋ฅผ ๊ฒ์ฌํด ์ฑ๋ฅ ์ธก์ ์ ํ ์ ์๋ ๋๊ตฌ์ฑ๋ฅ๊ฒ์ฌ + ๊ฐ์ ์ฑ ๋ ์ ๊ณต
- ํฌ๋กฌ์์ ๊ฒ์ฌํ๊ณ ์ถ์ ํ์ด์ง์ url์ ์ ๋ ฅ
- ๊ฐ๋ฐ์ ๋๊ตฌ > Lighthouse
- Generate report๋ฅผ ํด๋ฆญํฉ๋๋ค. Categories์์ ํน์ ํ ์งํ๋ง ์ ํํ์ฌ ๊ฒ์ฌํ ์๋ ์์ต๋๋ค.
- ๋๋ต 30-60์ด๊ฐ ๊ฒ์ฌ๊ฐ ์คํ๋ฉ๋๋ค. ๊ทธ ํ ์๋์ ๊ฐ์ด ๋ฆฌํฌํธ๊ฐ ํด๋น ํ์ด์ง์ ๊ฐ๋ฐ์ ๋๊ตฌ๋ด์ ์์ฑ๋ฉ๋๋ค.
'Code๊ฐ๋ฐ์ผ์ง' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
CI / CD (0) | 2023.02.03 |
---|---|
AWS (0) | 2023.02.02 |
TDD(Test-driven Development) (0) | 2023.01.31 |
Graph QL (0) | 2023.01.31 |
์ปดํจํฐ ๊ณตํ - ๊ตฌ์กฐ, ์ด์์ฒด์ (0) | 2023.01.27 |