์์ :
์ธํฐ๋ท์ด ์๋ PC๊ฐ ์์ง๋ง USB๋ฅผ ํตํด ํ์ผ์ ์ก์ ๊ฐ๋ฅํฉ๋๋ค. ์ด ํ์ผ์ ์ ์กํ ์ ์๋ ์ธํฐ๋ท์ด ์ฐ๊ฒฐ๋ ํ๋ธ๋ฆฟ์ด ์์ต๋๋ค. ํ๋ธ๋ฆฟ์์ ํ์ํ ํ ๋ ํธ๋ฅผ ๋ค์ด๋ก๋ํ ์ ์์ง๋ง ์ฌ์ ๊ณต๊ฐ์ด ์ถฉ๋ถํ์ง ์์ต๋๋ค. ํ ๋ ํธ์ ์๋ ํ์ผ์ ํ๋์ด๊ณ ํฝ๋๋ค.
์๋ฃจ์ ๊ฒฝ๋ก:
๋ค์ด๋ก๋๋ฅผ ์ํด ํ ๋ ํธ๋ฅผ ์์ํ์ต๋๋ค. ์ฌ์ ๊ณต๊ฐ์ด ๊ฑฐ์ ์์ด์ง์ ๋ค์ด๋ก๋๋ฅผ ์ผ์ ์ค์งํ์ต๋๋ค. ํ๋ธ๋ฆฟ์ PC์ ์ฐ๊ฒฐํ๊ณ ํ๋ธ๋ฆฟ์ ์๋ ํ์ผ์ PC๋ก ์ฎ๊ฒผ์ต๋๋ค. ์ ์ ๋ฉ์ท๋๋ ๋๋๊ฒ๋ ํ์ผ์ด ๋ค์ ์์ฑ๋์๊ณ ์๋ฌด ์ผ๋ ์์๋ ๊ฒ์ฒ๋ผ ํ ๋ ํธ๊ฐ ๊ณ์ ๋ค์ด๋ก๋๋์์ต๋๋ค.
ํ ๋ ํธ ํด๋ผ์ด์ธํธ๋ ์์ ํ ๋ฐ์ดํฐ๋ฅผ ์ฐ๋ ํ์ผ์ sparse ํ๋๊ทธ๋ฅผ ์ค์ ํ๊ธฐ ๋๋ฌธ์ ์์คํ ์ ํ ๋ฒ์ 16GB๋ฅผ ์์ฝํ๋ ค๊ณ ํ์ง ์์ผ๋ฉฐ, 4GB๋ฅผ ์ด๊ณผํ๋ ํ์ผ์ ์ฐ๋ ค๊ณ ํด๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
์ ์ฐจ๋ฅผ XNUMX๋ฒ ๋ฐ๋ณตํ ํ ๋์ผํ ํ ๋ ํธ์ ๋ค๋ฅธ ๋ถ๋ถ์ด ํฌํจ๋ ํ์ผ XNUMX๊ฐ๋ฅผ ๋ด PC์ ๋ฐ์์ต๋๋ค. ์ด์ ๋จ์ ๊ฒ์ ๊ทธ๊ฒ๋ค์ ํ๋๋ก ๋ฌถ๋ ๊ฒ๋ฟ์ด๋ค. ์ ์ฐจ๋ ๋ณธ์ง์ ์ผ๋ก ๊ฐ๋จํฉ๋๋ค. XNUMX๊ฐ ํ์ผ ์ค ํ๋์ ์ง์ ๋ ์์น์ XNUMX๋ฐ์ดํธ๊ฐ ์กด์ฌํ๋ ๊ฒฝ์ฐ XNUMX๋ฐ์ดํธ๋ฅผ ๋ค๋ฅธ ๊ฐ์ผ๋ก ๋ฐ๊ฟ์ผ ํฉ๋๋ค.
์ด๋ ๊ฒ ๊ฐ๋จํ ํ๋ก๊ทธ๋จ์ด ์ธํฐ๋ท์ ์์ด์ผ ํ ๊ฒ ๊ฐ์์ต๋๋ค. ์๋ฌด๋ ๊ทธ๋ฐ ๋ฌธ์ ๋ฅผ ๊ฒช์ ์ ์ด ์์ต๋๊น? ๊ทธ๋ฐ๋ฐ ์ด๋ค ํค์๋๋ก ๊ฒ์ํด์ผ ํ ์ง์กฐ์ฐจ ๋ชจ๋ฅด๊ฒ ๋ค๋ ๊ฑธ ๊นจ๋ฌ์์ด์. ๋ฐ๋ผ์ ์ ๋ ์ด ์์ ์ ์ํด ์ ์ํ๊ฒ Lua ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๊ณ ์ด์ ์ด๋ฅผ ์ต์ ํํ์ต๋๋ค. ์ด๊ฒ์ด ์ ๊ฐ ๊ณต์ ํ๊ณ ์ถ์ ๊ฒ์ ๋๋ค.
ํ ๋ ํธ๋ฅผ ๋ถ๋ถ์ ์ผ๋ก ๋ค์ด๋ก๋ํ๊ธฐ
- ์ฒซ ๋ฒ์งธ ์ฅ์น์์ ํ ๋ ํธ ๋ค์ด๋ก๋๋ฅผ ์์ํ์ธ์
- ROM์ด ๊ฐ๋ ์ฐฐ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ์ญ์์ค
- ๋ค์ด๋ก๋ ์ผ์์ค์ง
- ํ์ผ์ ๋ ๋ฒ์งธ ์ฅ์น๋ก ์ ์กํ๊ณ ํ์ผ ์ด๋ฆ์ ์ซ์๋ฅผ ์ถ๊ฐํ์ญ์์ค.
- ํ์ผ์ด ์์ ํ ๋ค์ด๋ก๋๋ ๋๊น์ง ์ฒซ ๋ฒ์งธ ์ง์ ์ผ๋ก ๋์๊ฐ๋๋ค.
์ฌ๋ฌ ๋ถ๋ถ์ ํ๋์ ํ์ผ๋ก ๋ณํฉ
๋ง์ง๋ง ๋ถ๋ถ์ ๋ฐ์ ํ์๋ ์ด๋ฅผ ํ๋์ ์ ์ฒด ํ์ผ๋ก ์์งํด์ผ ํฉ๋๋ค.
์์ ์ ๊ฐ๋จํฉ๋๋ค.
- ๋ชจ๋ ๋ถ๋ถ์ ํ ๋ฒ์ ์ฝ๊ธฐ
- ์ด๋ค ๋ถ๋ถ์์ ์์น๊ฐ XNUMX๋ฐ์ดํธ๊ฐ ์๋๋ฉด ์ถ๋ ฅ์ ์ฐ๊ณ , ๊ทธ๋ ์ง ์์ผ๋ฉด XNUMX์ ์๋๋ค.
๊ธฐ๋ฅ merge_part
์ค๋ ๋ ๋ฐฐ์ด์ ํ์ฉํฉ๋๋ค. streams_in
๊ทธ ์ค ํฌ๊ธฐ์ ์ผ๋ถ๋ฅผ ์ฝ์ต๋๋ค. buffer_length
๋ค๋ฅธ ์ค๋ ๋์ ๋ถํ์ ๋ณํฉํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํฉ๋๋ค.
function merge_part(streams_in, buffer_length)
local out_part
for _, stream in ipairs(streams_in) do
local in_part = stream:read(buffer_length)
if not out_part then
out_part = in_part -- ะฟัะพััะพ ะบะพะฟะธััะตะผ ัะฐััั ะธะท ะฟะตัะฒะพะณะพ ัะฐะนะปะฐ
elseif in_part and #in_part > 0 then
if #out_part < #in_part then
out_part, in_part = in_part, out_part
end
if out_part ~= in_part -- ะดะฐะฝะฝัะต ัะฐะทะปะธัะฐัััั
and in_part:find("[^ ]") -- ะตััั ะดะฐะฝะฝัะต ะฒ in_part
and out_part:find(" ", 1, true) -- ะตััั ะฟััััะต ะผะตััะฐ ะฒ out_part
then
local find_index = 1
--[[
๊ธฐ๋ฅ string.gsub
์ XNUMX์ผ๋ก ์ฑ์์ง ์กฐ๊ฐ์ ์ฐพ์์ ์ฃผ์ด์ง ๊ฒ์ ์ ๋ฌํ๊ธฐ ๋๋ฌธ์ ์์
์ ์ ํฉํฉ๋๋ค.
--]]
out_part = out_part:gsub(" +", function(zero_string)
if #in_part < find_index then
return -- ะฝะต ะฝะฐ ััะพ ะผะตะฝััั
end
--[[
string.gsub
์ผ์นํ๋ ํญ๋ชฉ์ด ๋ฐ๊ฒฌ๋ ์์น๋ฅผ ์ ๋ฌํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ์์น์ ๋ํด ๋ณ๋ ฌ ๊ฒ์์ ์ํํฉ๋๋ค. zero_string
๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ string.find
. ์ฒซ ๋ฒ์งธ XNUMX๋ฐ์ดํธ๋ฅผ ์ฐพ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํฉ๋๋ค.
--]]
local start_index = out_part:find(" ", find_index, true)
find_index = start_index + #zero_string
--[[
์ด์ ๋ง์ฝ์ in_part
์ ๋ํ ๋ฐ์ดํฐ๊ฐ ์์ต๋๋ค out_part
๋ณต์ฌํ์ธ์.
--]]
if #in_part >= start_index then
local end_index = start_index + #zero_string - 1
--[[
์๋ผ๋ด๊ธฐ in_part
XNUMX์ ์ํ์ค์ ํด๋นํ๋ ๋ถ๋ถ์
๋๋ค.
--]]
local part = in_part:sub(start_index, end_index)
if (part:byte(1) ~= 0) or part:find("[^ ]") then
--[[
ะ part
๋ฐ์ดํฐ๊ฐ ์์ต๋๋ค.
--]]
if #part == #zero_string then
return part
else
--[[
part
์ผ๋ จ์ XNUMX๋ณด๋ค ์์ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ๊ทธ๊ฒ๋ค๋ก ๋ณด์ถฉํฉ์๋ค.
--]]
return part..zero_string:sub(1, end_index - #in_part)
end
end
end
end)
end
end
end
return out_part
end
๊ฒฐ๋ก
๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ์ด ํ์ผ์ PC์ ๋ค์ด๋ก๋ํ์ฌ ์กฐํฉํ ์ ์์์ต๋๋ค. ํฉ๋ณ ํ ํ๋ธ๋ฆฟ์์ ํ ๋ ํธ ํ์ผ์ ๊บผ๋์ต๋๋ค. ๋ด PC์ ํ ๋ ํธ ํด๋ผ์ด์ธํธ๋ฅผ ์ค์นํ๊ณ ๊ทธ๊ฒ์ผ๋ก ํ์ผ์ ํ์ธํ์ต๋๋ค.
ํ๋ธ๋ฆฟ์ ๋ง์ง๋ง์ผ๋ก ๋ค์ด๋ก๋ํ ๋ถ๋ถ์ ๋ฐฐํฌํ์ ๋จ๊ฒจ๋ ์ ์์ง๋ง, ์ด ์ ์ ํด๋น ๋ถ๋ถ์ ๋ค์ ํ์ธํ๋๋ก ์ค์ ํ๊ณ ๋ค์ ๋ค์ด๋ก๋๋์ง ์๋๋ก ํ์ผ์ ์ ํ์ ์ทจ์ํด์ผ ํฉ๋๋ค.
์ฌ์ฉ๋:
- ํ๋ธ๋ฆฟ์ Flud ํ ๋ ํธ ํด๋ผ์ด์ธํธ.
- PC์ ํ ๋ ํธ ํด๋ผ์ด์ธํธ qBittorent.
๋ฃจ์ ์คํฌ๋ฆฝํธ
์ถ์ฒ : habr.com