2020-11-12(Thu)
Last updated
Last updated
ํ์ต ๋ ์ง // 2020-11-12(๋ชฉ)
ํ์ต์๊ฐ // 9:00~22:00
ํ์ต ๋ฒ์ ๋ฐ ์ฃผ์ // error fix
๋๋ฃ ํ์ต ๋ฐฉ๋ฒ // sanam, yohai๋๊ณผ ํ์ ํจ
ํ์ต ๋ชฉํ // jpg ํ์ผ์ ๋ณด๋ผ ๋ ๋ฐ์ํ๋ ์๋ฌ๋ฅผ ์ก์.
์์ธ ํ์ต ๋ด์ฉ
BACKLOG์์ TODO๋ก ๋ถ์์ํจ ์นด๋ ์ค FIX: send jpg
๋ ๋ฌธ์ ๋ฅผ ์ด์ ํ์ธํ๊ณ ํด๊ฒฐํด๋ณด๊ณ ์ถ๋ค๊ณ ๋ฒผ๋ฅด๊ณ ์์๋ ๊ฒ์ด์๋ค. ๊ทธ๋ฅ ๋จธ๋ฆฟ์์ผ๋ก ๊ฒ์ฆํ์ ๋๋ ๋ถ๋ช
๋ฌธ์ ๊ฐ ์๊ธธ ์๊ฐ ์๋๋ฐ ์ ๋ฌธ์ ๊ฐ ์๊ธฐ๋ ์ถ์๊ธฐ ๋๋ฌธ์ด๋ค.
๋คํํ ๋๋ฒ๊ทธ ๋ก๊ทธ๋ฅผ ์ ์ฌ์ด๋์๋ค๋ณด๋ ์๊ฐ๋ณด๋ค ๋ฌธ์ ๋ฐ์์ง์ ์ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์์๋ค. ๋ฐ๋ก jpg ํ์ผ์ readํ๊ณ buffer์ ์ ์ฅํ ๋ฐ์ดํฐ๋ฅผ Response _body๋ก ์ ์ฅํ๋ ๊ณผ์ ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ด์๋ค. ์ชผ๊ฐ๋ณด๋ฉด ์๋ ๋ ๊ฐ์ง ๊ฐ๋ฅ์ฑ์ด ์๋ค.
read์์ buffer์ ์๋ชป๋ ๊ฐ์ด ์ ์ฅ๋๋ค.
buffer์์ Response _body๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ์๋ชป๋ ๊ฐ์ด ์ ์ฅ๋๋ค.
1๋ฒ์ read ์์ binary ๋ชจ๋์ ๊ทธ๋ ์ง ์์ ๋ชจ๋๋ฅผ ์ค์ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค๊ณ ํ์ฌ ๊น๊ฒ ์กฐ์ฌํด๋ณด์์ผ๋ ๋ ๋ชจ๋๋ฅผ ๊ตฌ๋ถํ๋ ๊ฒฝ์ฐ๋ window OS ํ๊ฒฝ์์์ ์ ๊ทผ๋ฐฉ๋ฒ์ผ๋ก ๋ณด์๋ค. ๊ทธ๋ผ ์ ๋์ค์์๋ ์ด๋ป๊ฒ ํด์ผํ๋๊ฐ? ์ธํฐ๋ท์ ๋ง์ ์์ ๋ค์ ์ฐ๋ฆฌ์๊ฒ ํ์ฉ๋ read ํจ์ ์ธ์ fstream์ ํ์ฉํ๋ ์์ด๋ผ ์ฐธ๊ณ ํ ์ ์์๋ค. ์ค์ ๊ทธ๋ฐ๋ฐ ๋ค๋ฅธ ์ด๋ฏธ์ง๋ฅผ readํ๋ ๊นํ๋ค์ ํ์ธํด๋ณธ ๊ฒฐ๊ณผ ๊ทธ๋ฅ read๋ฅผ ํ๋ค. 2๋ฒ์ ์ ๋๋ก ๊ฒ์ฆํด๋ณด์.
2๋ฒ์ด ๋ต์ด์๋ค. jpg ํ์ผ์๋ '\0' ๋ฌธ์๋ก ๋๋๋ ๊ฒ์ด ๋ณด์ฅ๋์ง ์๋๋ค. ์ฆ '\0' ๋ฌธ์๊ฐ ์ค๊ฐ ์ค๊ฐ ์์ ์๋, ์๋๋ฉด ํ์ผ์ ๋๊น์ง ์ฝ์ด๋ '\0' ๋ฌธ์๊ฐ ์์ ์ ์๋ค๋ ๊ฒ์ด๋ค. ๊ทธ๋ฐ๋ฐ buffer์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ Response ๊ฐ์ฒด ์์ std::string _body ๋ก ์ ์ฅํ ๋ std::stirng(buf)
์์ฑ์๋ก ์ ์ฅํด์๋ ๊ฒ์ด ํ๊ทผ์ด์๋ค. ์ด๋ฐ์์ผ๋ก ๊ฐ์ ์ ์ฅํ๋ฉด buf ์์ ์๋ '\0' ๋ฌธ์๊น์ง์ ๋ฐ์ดํฐ๋ง string ๊ฐ์ฒด์ ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ด๋ค.
std::string(buf, bytes)
๋ก ์์ ํ์ฌ, '\0'๊น์ง๋ง์ด ์๋๋ผ bytes ๊ธธ์ด๋งํผ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋๋ก ํ์ฌ ํด๊ฒฐํ์๋ค.
ํ์ต ๋ด์ฉ์ ๋ํ ๊ฐ์ธ์ ์ธ ์ดํ
์ด๋ค ๋ฌธ์ ๋ , ๋ก๊ทธ๋ฅผ ๋ฐํ์ผ๋ก ๋ ผ๋ฆฌ์ ์ผ๋ก ์ฐจ๋ถํ ์ถ๋ก ํ๋ฉด ๋ฌธ์ ๊ฐ ๋๋ฌ๋๋ ๊ฒ์ ์ค๊ฐํฉ๋๋ค.
subject์ ์กฐ๊ฑด์ ๋ง์ถฐ์ select ํ ํ๋ฒ์ read๋ง ํ๋ ๊ฒ์ ํ์คํ ๋ณด์ฅํ๊ธฐ ์ํ์ฌ ๋๋์ ์ธ ํ๋ฆ ๊ฐ์ ์ ์งํํ๊ธฐ๋ก ํ์ต๋๋ค.
client๊ฐ BUFFER_SIZE ๋ณด๋ค ํฐ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์์ ๋ ์ฌ๋ฌ๋ฒ์ select๋ฅผ ๊ฑฐ์ณ readํ์ฌ Request๋ก ๊ฐ์ฒด๋ก ๋ฐ์๋ด๋ ๊ฒ
Request body๊ฐ BUFFER_SIZE ๋ณด๋ค ํด ๋ ์ฌ๋ฌ๋ฒ์ select๋ฅผ ๊ฑฐ์ณ writeํ์ฌ CGI์ body๋ฅผ ๋ณด๋ด๋ ๊ฒ.
CGI message๊ฐ BUFFER_SIZE ๋ณด๋ค ํด ๋ ์ฌ๋ฌ๋ฒ์ select๋ฅผ ๊ฑฐ์ณ readํ์ฌ Response _body๋ก ๋ง๋ค์ด๋ด๋ ๊ฒ.
Static resource ์ฉ๋์ด BUFFER_SIZE๋ณด๋ค ํด ๋ ์ฌ๋ฌ๋ฒ์ select๋ฅผ ๊ฑฐ์ณ readํ์ฌ Response _body๋ก ๋ง๋ค์ด๋ด๋ ๊ฒ.
Response _body๊ฐ BUFFER_SIZE๋ณด๋ค ํด ๋ ์ฌ๋ฌ๋ฒ์ select๋ฅผ ๊ฑฐ์ณ wrtieํ์ฌ Client์ sendํ๋ ๊ฒ.
chunked ํต์ ์ด ์ ์๋ฏธํ๋๋ก CGI๋ก๋ถํฐ ๋ฉ์ธ์ง๋ฅผ select๋ฅผ ๊ฑฐ์ณ readํ๊ณ readํ ๋ด์ฉ์ select๋ฅผ ๊ฑฐ์ณ chunked ์ธ์ฝ๋ฉํ์ฌ client์ sendํ๊ณ , ๋ค์ CGI๋ก๋ถํฐ ๋ฉ์ธ์ง๋ฅผ select๋ฅผ ๊ฑฐ์ณ readํ๊ณ ... ํ๋ ๊ณผ์ ์ CGI๊ฐ ์ข ๋ฃ๋ ๋๊น์ง ๋ฐ๋ณตํ๋๋ก ํ๋ ๊ฒ.
์ฌ์ค ์ง์ง ์ด ๋ชจ๋ ์กฐ๊ฑด์ ์๋ฒฝํ ๋ง์กฑํ ์น์๋ฒ๋ฅผ ๊ตฌํํ์ ๋ถ์ ์ ์๋ ๊ฒ ๊ฐ์ง๋ง, ํ์๋ค๊ณผ '๋๋ฃ์๊ฒ ๋น๋นํ๊ฒ ๋ด๋ณด์ผ ์ ์๋ ์น์๋ฒ๋ฅผ ๋ง๋ค์๋ ์๊ฐ'์ ๊ณต์ ํ๊ณ ์์ด์ ๊ตฌํํ๋ ๊ฒ์ด ๊ฐ๋ฅํ ๊ฒ ๊ฐ์ต๋๋ค. ํ์๋ค์ด ๊ณ ๋ง๊ณ ์๋์ค๋ฝ๋ค์. ๋จ์ํ ํ๋ก์ ํธ๋ฅผ ํต๊ณผํ๊ธฐ ์ํ ์ฝ๋๋ฅผ ๋ง๋ ๊ฒ์ ๊ทธ๋ด ์ ์๋ค์ณ๋, ๊ธฐ์ด์ ์ธ subject ์๊ตฌ์ฌํญ์ ์งํค์ง์๊ณ ๋ ๊ธฐ์ด์ ์ธ crash protect ์ฒ๋ฆฌ๋ ์์ด ๊ณผ์ ๋ฅผ ๊ตฌํํ๋๋ฐ ๋ถ๊ตฌํ๊ณ ์ ๋นํ ํ๊ฐ๋ฅผ ์ต์ธํ๊ฒ ์๊ฐํ๊ณ ๋๋ ค ํ๊ฐ์๋ฅผ ์ ๋ํ๋.. ์ ๋น๋ก์ด ํ๊ณผ๋ ๋ค๋ฅธ ์ธ์ฑ์ด๋ผ ๊ฐ์ฌํ ๋ฐ๋ฆ์ ๋๋ค.
๋ค์ ํ์ต ๊ณํ
Transfer-Encoding ํค๋ ๊ตฌํ