ืืฉืืื:
ืืฉ ืืืฉื ืืื ืืื ืืจื ื, ืืื ืืคืฉืจ ืืืขืืืจ ืืช ืืงืืืฅ ืืจื USB. ืืฉ ืืืืื ืขื ืืื ืืจื ื ืฉืืื ื ื ืืชื ืืืขืืืจ ืืช ืืงืืืฅ ืืื. ืืชื ืืืื ืืืืจืื ืืช ืืืืจื ื ืื ืืจืฉ ืืืืืื ืฉืื, ืืื ืืื ืืกืคืืง ืืงืื ืคื ืื. ืืงืืืฅ ืืืืจื ื ืืื ืืื ืืืืื.
ืืจื ืืคืชืจืื:
ืืชืืืชื ืืช ืืืืจื ื ืืื ืืืืจืื. ืืฉืืฉืื ืืคื ืื ืืืขื ื ืขืื, ืขืฆืจืชื ืืช ืืืืจืื. ืืืืจืชื ืืช ืืืืืื ืืืืฉื ืืืขืืจืชื ืืช ืืงืืืฅ ืืืืืืื ืืืืฉื. ืขืฆืจืชื ืืืืคืชืขืชื ืืงืืืฅ ื ืืฆืจ ืฉืื ืืืืืจื ื ืืืฉืื ืืืืจืื ืืืืื ืืืื ืื ืงืจื.
ืืฉื ืืขืืืื ืฉืืงืื ืืืืจื ื ืืืืืจ ืืช ืืืื ืืื ืืงืืืฅ ืื ืืื ืืืชื ืืช ืื ืชืื ืื ืฉืืชืงืืื, ืืืขืจืืช ืื ืื ืกื ืืฉืืืจ 16GB ืืืช ืืืช ืืื ืชืชืจืืฉ ืฉืืืื ืื ืืกืืื ืืืชืื ืืงืืืฅ ืืขืืจ ื-4GB.
ืืืืจ ืฉืืืจืชื ืขื ืืืืื ืืจืืข ืคืขืืื, ืงืืืืชื ืืจืืขื ืงืืฆืื ืืืืฉื ืืืืฉื ืฉืื ืืืืืืื ืืืงืื ืฉืื ืื ืฉื ืืืชื ืกืืงืืจ. ืขืืฉืื ืื ืฉื ืืชืจ ืืื ืืืืจ ืืืชื ืืื. ืืืืื ืืื ืคืฉืื ืืืืืชื. ืืชื ืฆืจืื ืืืืืืฃ ืืช ืืคืก ืืชืื ืืขืจื ืืืจ ืื ืืื ืงืืื ืืืืงืื ื ืชืื ืืืื ืืืจืืขืช ืืงืืฆืื.
ื ืจืื ืื ืฉืชืืื ืืช ืคืฉืืื ืืื ืฆืจืืื ืืืืืช ืืืื ืืจื ื. ืืื ืืฃ ืืื ืื ื ืชืงื ืืืขืื ืืื? ืืื ืืื ืชื ืฉืื ื ืืคืืื ืื ืืืืข ืืืื ืืืืืช ืืคืชื ืืืคืฉ ืืช ืื. ืืื, ืืฆืจืชื ืืืืืจืืช ืกืงืจืืคื Lua ืขืืืจ ืืืฉืืื ืืื ืืขืืฉืื ืขืฉืืชื ืื ืืืคืืืืืืฆืื. ืื ืื ืฉืื ื ืจืืฆื ืืฉืชืฃ.
ืืืจืืช ืืืืจื ื ืืืืงืื
- ืืืชืืื ืืืืจืื ืืช ืืืืจื ื ืืืืฉืืจ ืืจืืฉืื
- ืืืชื ืขื ืืืืืื ื-ROM
- ืืฉืื ืืช ืืืืจืื
- ืืืขืืืจ ืืช ืืงืืืฅ ืืืืฉืืจ ืืฉื ื ืืืืืกืืฃ ืืกืคืจ ืืฉื ืืงืืืฅ
- ื ืืืืจ ืื ืงืืื ืืจืืฉืื ื ืขื ืืืืจืื ืืืื ืฉื ืืงืืืฅ
ืืืืื ืืืงืื ืืงืืืฅ ืืื
ืืืืจ ืฉืืืืง ืืืืจืื ืืชืงืื, ืืฉ ืฆืืจื ืืืกืืฃ ืืืชื ืืงืืืฅ ืฉืื ืืื.
ืืืฉืืื ืคืฉืืื:
- ืงืจืืืช ืื ืืืืงืื ืืืช ืืืช
- ืื ืืืืง ืืกืืื ืืืืงืื ืืื ื ืืชืื ืืคืก, ืื ื ืืชืื ืืืชื ืืคืื, ืืืจืช ื ืืชืื ืืคืก
ืคืื ืงืฆืื 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
ืืชืืื ืืืฉืืื ืื ืืื ืืืฆื ืืืงืื ืืืืื ืืืคืกืื ืืืกืคืง ืืช ืื ืฉื ืืชื ืื.
--]]
out_part = out_part:gsub(" +", function(zero_string)
if #in_part < find_index then
return -- ะฝะต ะฝะฐ ััะพ ะผะตะฝััั
end
--[[
string.gsub
ืืื ื ืืขืืืจ ืืช ืืืืงืื ืื ื ืืฆืื ืืืชืืื. ืืื, ืื ืื ื ืขืืฉืื ืืืคืืฉ ืืงืืื ืืืจ ืืชืคืงืื zero_string
ืืืืฆืขืืช ืืคืื ืงืฆืื string.find
. ืื ืืกืคืืง ืืื ืืืฆืื ืืช ืืคืก ืืชืื ืืจืืฉืื.
--]]
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
ืืืง ืืืชืืื ืืจืฆืฃ ืืืคืกืื.
--]]
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
ืืชืืจืจ ืฉืืื ืคืืืช ืืจืฆืฃ ืฉื ืืคืกืื. ืืื ื ืฉืืื ืืช ืื ืืืชื.
--]]
return part..zero_string:sub(1, end_index - #in_part)
end
end
end
end)
end
end
end
return out_part
end
ืืกืงื ื
ืืคืืื, ืืฆืืื ื ืืืืจืื ืืืืจืืื ืืช ืืงืืืฅ ืืื ืืืืฉื. ืืืืจ ืืืืืื, ืฉืืคืชื ืืช ืงืืืฅ ืืืืจื ื ืืืืืืื. ืืชืงื ืชื ืืงืื ืืืจื ื ืืืืฉื ืฉืื ืืืืงืชื ืืืชื ืืช ืืงืืืฅ.
ื ืืชื ืืืฉืืืจ ืืช ืืืืง ืืืืจืื ืฉืืืจื ืืืืืื ืืืคืฆื, ืื ืขืืื ืืืคืฉืจ ืืืืงื ืืืืจืช ืฉื ืืืืงืื ืืคื ื ืื ืืืืื ืืช ืืกืืืื ืฉื ืืงืืืฅ ืืื ืฉืื ืืืจืื ืฉืื.
ืืฉืืืืฉ:
- ืืงืื Flud torrent ืืืืืื.
- ืืงืื ืืืจื ื qBittorent ืืืืฉื.
ืชืกืจืื ืืืื
ืืงืืจ: www.habr.com