์ค์น ๊ถํ์ด ์๊ฑฐ๋ ์ ํ์ ์ธ ์์คํ ์ ์ฌ์ฉ ์ค์ผ ๋ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค.
Perl ์ ์ค์น๋์ด ์๋ค๊ณ ๊ฐ์ ํ๋ค.
, ๋ก ๋ถ๋ฆฌ๋ csv ํ์ผ์ ๋ด์ฉ์ ๋ถ์ํ๋ค.
๋ก๊ทธํ๋ ๋ด์ฅ ๋ก๊ทธํจ์๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์์ฉ๋ก๊ทธ์ ๊ทผ์ฌ๊ฐ์ ๊ณ์ฐํ๋ค.
mysql client - perl ์ DBI ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ mysql ์ ์ ๊ทผํ์ฌ SQL์ ์ ์กํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ๋ฐ๋๋ค.
์ ํ๋ธ ํ๋ฆฌ์ ๊ฐ์ด ์ฌ๋ฌ ๊ณก์ด ํ๋์ mp3ํ์ผ์ ์กด์ฌํ ๊ฒฝ์ฐ mp3info.txt ์ ์ง์ ๋ ์ฌ์ ์๊ฐ ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ผ์ ๋๋๊ณ ID3 ํ๊ทธ๋ฅผ ์์ฑํ๋ค.
๋ดํผ-๋ฉ์จ ๋ฐฉ๋ฒ์ผ๋ก ์ ๊ณฑ๊ทผ์ ๊ตฌํ๋ค.
- origin, target ๋๋ ํ ๋ฆฌ๋ฅผ argument๋ก ๋ฐ์, origin์ ํ์ ๋๋ ํ ๋ฆฌ/ํ์ผ์ ์ํํ๋ค.
- target ๋๋ ํ ๋ฆฌ ์๋ ๋์ผ ์์น์ ๊ฐ์ ์ด๋ฆ์ ํ์ผ์ด ์๋์ง ์ดํด๋ณด๊ณ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ ๋ณต์ฌํ๋ค.
- origin ๋๋ ํ ๋ฆฌ๋ ๋ฐ๋์ ์กด์ฌํด์ผ ํ๋ค.
- target ๋๋ ํ ๋ฆฌ๊ฐ ํด๋น ์์น์ ์๋ ๊ฒฝ์ฐ ์๋ก ์์ฑํ๋ค.
HTTP ํ๋กํ ์ฝ์ ์ง์ํ๋ ํด๋ผ์ด์ธํธ
- HTTP protocol ์ ์ฌ์ฉํ์ฌ message ๋ฅผ ๋ณด๋ด๊ณ ๋ฐ๋๋ค.
- IO::Socket::INET ์ ์ง์ ์ด์ฉํ์ฌ Socket ์ ๋ค๋ฃฌ๋ค.
- GET, POST method ๋ฅผ ์ง์ํ๋ค.
- request multipart/form-data ์ ์ก์ ์ง์ํ๋ค.
- response chunked mode ๋ฅผ ์ง์ํ๋ค.
Volken::HTTP ์ ๋ํ HTTPS ์ง์
- SSL ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ง์ ์ ๊ณต๋์ง ์๋๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น๊ฐ ํ์ํ๋ค. ๐ฉ
- ๊ทธ ์ธ ๊ธฐ๋ฅ์ HTTP์ ๋์ผํ๋ค.
- Json parser ์ด๋ค.
- file ํน์ string ์ parsing ํ์ฌ tree ๊ตฌ์กฐ๋ฅผ ๋ง๋ ๋ค.
- ๊ฐ๋จํ ๋ช ๊ฐ์ง ๋ฌธ๋ฒ์ ์ง์ํ๋ html ๋งํฌ์ ์์ฑ๊ธฐ.
- blockquote, ul/li, h1-5, pre ํ๊ทธ๋ฅผ ์ง์ํ๋ค.
- ๊ฒฝ์ฐ์ ์๋ฅผ ๋ฐ์ ธ ์์ด, ์กฐํฉ์ ๊ฒฝ์ฐ๋ก ์์๋ฅผ ์ฌ ๋ฐฐ์ดํ๋ค.
- ๋ถ๋ ์์์ ์ ์ฌ์ฉํ์ง ์๊ณ ์ ๋ฆฌ์ ์ฐ์ฐ์ ์ ๊ณตํ๋ค.
- Volken::ZN - ์ด๋ฅผ ์ํด ๋จผ์ ์ ์์ ์ ์์ ์ฌ์น์ฐ์ฐ์ ์ ์ํ๋ค.
- Volken::PF - ๋๋์ ์ ๊ตฌํํ๊ธฐ ์ํด ์์ธ์ ๋ถํด๋ฅผ ๊ตฌํํ๋ค.
- Volken:QN - ์ ์์ ๋น๋ก ์ ๋ฆฌ์๋ฅผ ์ ์ํ๊ณ ์ ๋ฆฌ์์ ์ฌ์น์ฐ์ฐ์ ์ ์์ ์ฌ์น์ฐ์ฐ์ผ๋ก ๊ตฌํํ๋ค.
- Multipart form data ๋ก ๋ฐ์ด๋๋ฆฌํ์ผ์ ์ ์กํ๊ธฐ ์ํด ์ฌ์ฉํ๋ Multipart ๊ตฌ์กฐ์ฒด๋ฅผ ์์ฑํ๋ค.
- usage/multipart/send_via_multipart.pl ์์ ์ฌ์ฉํ๋ค.
- ํ ์คํธ ํ์ ํ์ผ์ ์ด ๋ ๋จผ์ wc -l ๋ก ์ ์ฒด row ์๋ฅผ ์์๋ธ ํ ์ผ๋ง๋ ์ฝ์๋์ง ๋น์จ์ ์ธก์ ํ๋ค.
- java ์ Properties ๊ฐ์ฒด์ ์์ํ๋ค.
- ๊ตฌ๋ถ์๋ก ๋๋ ํค-๊ฐ ํ์ผ์ ๋ก๋ํ์ฌ ํค์ ํด๋นํ๋ ๊ฐ์ ๋ฐํํ๋ค.
- ์ ํธ๋ฆฌํฐ ๋ชจ์์ด๋ค.
- pretty_kr_datetime - kr ํ์ํ๋ ์๊ฐ์ ๋ฐํํ๋ค. (yyyy๋ mm์ dd์ผ ์ค์ /์คํ HH์ MM๋ถ SS์ด)
- sec_to_hms - ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์/๋ถ/์ด๋ก ํ์ฐํ ์๊ฐ์ ๋ฐํํ๋ค.
- percent_decode - URL ์ ์ฌ์ฉ๋๋ %์ซ์ ์ ๊ฐ์ ๋์ฝ๋ฉํ๋ค.
- trim - ์๋ค ๊ณต๋ฐฑ์ ์ ๊ฑฐํ๋ค.
๋ชจ๋์ ๋ํ ๊ฒ์ฆ ์ฝ๋
Server socket ์ ์ด๊ณ ๋๊ธฐํ ํ ๋ค์ด์จ ์์ฒญ์ ๋ํด ์ฐ๋ ๋๋ฅผ ์์ฑํ์ฌ ์ฒ๋ฆฌ๋ฅผ ์์ํ๋ค.
๋ค์ด์จ ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋๋ก ๋๋ ค์ค๋ค.
์์ผ์ ์ด๊ณ ์ ๋ ฅ๋ฐ์ ๋ฌธ์์ด์ ์๋ฒ์ ์ ์กํ๊ณ ์๋ต๋ด์ฉ์ ํ๋ฆฐํธ ํ ํ ์ข ๋ฃํ๋ค.
๋ธ๋ผ์ฐ์ ์์ multipart-form-data๋ฅผ ์ ์กํ๋๋ก ํ๋ ์์
lib/Volken::Part ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ multipart-form-data ๋ก ๋ฐ์ด๋๋ฆฌ ํ์ผ์ ์ ์กํ๋ค.
Volken::PF, Volken::QN, Volken::ZN ์ ์ด์ฉํ์ฌ ํ์ด ๊ณ์ฐ, ์ฌ์น์ฐ์ฐ ๊ณ์ฐ ๋ฑ์ ์์ฐ
file_sync.pl ์ ํตํด ๋๋ ํ ๋ฆฌ ๋ณต์ ๋ฅผ ํ ์คํธํ๊ธฐ ์ํ ๋๋ ํ ๋ฆฌ
parse_json.pl ์์ ํ ์คํธ๋ฅผ ์ํด ์ค๋นํ json ํ์ผ
Volken::File ์ ๊ธฐ๋ฅ์ ๊ฒ์ฆํ๊ธฐ ์ํด s-from ๋๋ ํ ๋ฆฌ๋ฅผ ๋ณต์ ํ๋ค.
Volken::HTTP, Volken::HTTPS ์ ๊ธฐ๋ฅ์ ๊ฒ์ฆํ๋ค.
Volken::Mark ์ ๊ธฐ๋ฅ์ ๊ฒ์ฆํ๊ธฐ ์ํด ์ค๋นํ ํ ํ๋ฆฟ
Voken::Mark ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ markup.html ์ ๋ด์ฉ์ Markup ํ๋ค.
Volken::NumberOfCases ์ ๊ธฐ๋ฅ์ ๊ฒ์ฆํ๋ค. ์์ด๊ณผ ์กฐํฉ์ ๊ฒฝ์ฐ์ ์๋ฅผ ๋์ดํ๋ค.
Volken::Json ์ ๊ธฐ๋ฅ์ ๊ฒ์ฆํ๋ค.
Json ํฌ๋งท์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅ๋ฐ์ indent ๋ฅผ ์ฌ์ฉํ์ฌ ๋ณด๊ธฐ์ข๊ฒ ํฌ๋งทํ ํ๋ค.
ํ ์คํธ ํ์ ํ์ผ์ ์ด๊ณ ๋ผ์ธ์ ์ฝ์ด๋ค์ผ ๋ ๋ช ๋ฒ์งธ ๋ผ์ธ์ธ์ง๋ฅผ ๋ณด๊ณ ๋ช ํผ์ผํธ์ธ์ง ๋ฐํํ๋ค.
wasm ์ ์ด์ฉํ์ฌ ๋ธ๋ผ์ฐ์ ์์ ์ฌ์น์ฐ์ฐ์ ๋์ํ๋ค.
๋ญํด์ ๊ฐ๋ฏธ๋ฅผ ์๋ฎฌ๋ ์ด์ ํ๋ค.
javascript ๋ฅผ ๋ ๊ฐ์ง (callback, promise) ๋ฐฉ๋ฒ์ผ๋ก ์ฌ์ฉํ์ฌ client side ์์ ๊ธ ๋ชฉ๋ก-์์ธ ์ด๋์ ๊ตฌํํ๋ค.