ื”ื•ืจื“ืช ื˜ื•ืจื ื˜ ืฉืœ 16GB ื“ืจืš ื˜ืื‘ืœื˜ ืขื 4GB ืฉืœ ืžืงื•ื ืคื ื•ื™

ื”ื•ืจื“ืช ื˜ื•ืจื ื˜ ืฉืœ 16GB ื“ืจืš ื˜ืื‘ืœื˜ ืขื 4GB ืฉืœ ืžืงื•ื ืคื ื•ื™

ืžืฉื™ืžื”:

ื™ืฉ ืžื—ืฉื‘ ืœืœื ืื™ื ื˜ืจื ื˜, ืื‘ืœ ืืคืฉืจ ืœื”ืขื‘ื™ืจ ืืช ื”ืงื•ื‘ืฅ ื“ืจืš USB. ื™ืฉ ื˜ืื‘ืœื˜ ืขื ืื™ื ื˜ืจื ื˜ ืฉืžืžื ื• ื ื™ืชืŸ ืœื”ืขื‘ื™ืจ ืืช ื”ืงื•ื‘ืฅ ื”ื–ื”. ืืชื” ื™ื›ื•ืœ ืœื”ื•ืจื™ื“ ืืช ื”ื˜ื•ืจื ื˜ ื”ื ื“ืจืฉ ื‘ื˜ืื‘ืœื˜ ืฉืœืš, ืื‘ืœ ืื™ืŸ ืžืกืคื™ืง ืžืงื•ื ืคื ื•ื™. ื”ืงื•ื‘ืฅ ื‘ื˜ื•ืจื ื˜ ื”ื•ื ืื—ื“ ื•ื’ื“ื•ืœ.

ื“ืจืš ืœืคืชืจื•ืŸ:

ื”ืชื—ืœืชื™ ืืช ื”ื˜ื•ืจื ื˜ ื›ื“ื™ ืœื”ื•ืจื™ื“. ื›ืฉื”ืฉื˜ื— ื”ืคื ื•ื™ ื›ืžืขื˜ ื ืขืœื, ืขืฆืจืชื™ ืืช ื”ื”ื•ืจื“ื”. ื—ื™ื‘ืจืชื™ ืืช ื”ื˜ืื‘ืœื˜ ืœืžื—ืฉื‘ ื•ื”ืขื‘ืจืชื™ ืืช ื”ืงื•ื‘ืฅ ืžื”ื˜ืื‘ืœื˜ ืœืžื—ืฉื‘. ืขืฆืจืชื™ ื•ืœื”ืคืชืขืชื™ ื”ืงื•ื‘ืฅ ื ื•ืฆืจ ืฉื•ื‘ ื•ื”ื˜ื•ืจื ื˜ ื”ืžืฉื™ืš ืœื”ื•ืจื™ื“ ื›ืื™ืœื• ื›ืœื•ื ืœื ืงืจื”.

ื‘ืฉืœ ื”ืขื•ื‘ื“ื” ืฉืœืงื•ื— ื”ื˜ื•ืจื ื˜ ืžื’ื“ื™ืจ ืืช ื”ื“ื’ืœ ื”ื“ืœ ืœืงื•ื‘ืฅ ื‘ื• ื”ื•ื ื›ื•ืชื‘ ืืช ื”ื ืชื•ื ื™ื ืฉื”ืชืงื‘ืœื•, ื”ืžืขืจื›ืช ืœื ืžื ืกื” ืœืฉืžื•ืจ 16GB ื‘ื‘ืช ืื—ืช ื•ืœื ืชืชืจื—ืฉ ืฉื’ื™ืื” ื‘ื ื™ืกื™ื•ืŸ ืœื›ืชื•ื‘ ืœืงื•ื‘ืฅ ืžืขื‘ืจ ืœ-4GB.

ืœืื—ืจ ืฉื—ื–ืจืชื™ ืขืœ ื”ื”ืœื™ืš ืืจื‘ืข ืคืขืžื™ื, ืงื™ื‘ืœืชื™ ืืจื‘ืขื” ืงื‘ืฆื™ื ื‘ืžื—ืฉื‘ ื”ืื™ืฉื™ ืฉืœื™ ื”ืžื›ื™ืœื™ื ื—ืœืงื™ื ืฉื•ื ื™ื ืฉืœ ืื•ืชื• ืกื™ืงื•ืจ. ืขื›ืฉื™ื• ื›ืœ ืฉื ื•ืชืจ ื”ื•ื ืœื—ื‘ืจ ืื•ืชื ื™ื—ื“. ื”ื”ืœื™ืš ื”ื•ื ืคืฉื•ื˜ ื‘ืžื”ื•ืชื•. ืืชื” ืฆืจื™ืš ืœื”ื—ืœื™ืฃ ืืช ืืคืก ื‘ืชื™ื ื‘ืขืจืš ืื—ืจ ืื ื”ื•ื ืงื™ื™ื ื‘ืžื™ืงื•ื ื ืชื•ืŸ ื‘ืื—ื“ ืžืืจื‘ืขืช ื”ืงื‘ืฆื™ื.

ื ืจืื” ืœื™ ืฉืชื•ื›ื ื™ืช ืคืฉื•ื˜ื” ื›ื–ื• ืฆืจื™ื›ื” ืœื”ื™ื•ืช ื‘ืื™ื ื˜ืจื ื˜. ื”ืื ืืฃ ืื—ื“ ืœื ื ืชืงืœ ื‘ื‘ืขื™ื” ื›ื–ื•? ืื‘ืœ ื”ื‘ื ืชื™ ืฉืื ื™ ืืคื™ืœื• ืœื ื™ื•ื“ืข ืื™ืœื• ืžื™ืœื•ืช ืžืคืชื— ืœื—ืคืฉ ืืช ื–ื”. ืœื›ืŸ, ื™ืฆืจืชื™ ื‘ืžื”ื™ืจื•ืช ืกืงืจื™ืคื˜ Lua ืขื‘ื•ืจ ื”ืžืฉื™ืžื” ื”ื–ื• ื•ืขื›ืฉื™ื• ืขืฉื™ืชื™ ืœื• ืื•ืคื˜ื™ืžื™ื–ืฆื™ื”. ื–ื” ืžื” ืฉืื ื™ ืจื•ืฆื” ืœืฉืชืฃ.

ื”ื•ืจื“ืช ื”ื˜ื•ืจื ื˜ ื‘ื—ืœืงื™ื

  1. ืœื”ืชื—ื™ืœ ืœื”ื•ืจื™ื“ ืืช ื”ื˜ื•ืจื ื˜ ื‘ืžื›ืฉื™ืจ ื”ืจืืฉื•ืŸ
  2. ื”ืžืชืŸ ืขื“ ืœืžื™ืœื•ื™ ื”-ROM
  3. ื”ืฉื”ื” ืืช ื”ื”ื•ืจื“ื”
  4. ืœื”ืขื‘ื™ืจ ืืช ื”ืงื•ื‘ืฅ ืœืžื›ืฉื™ืจ ื”ืฉื ื™ ื•ืœื”ื•ืกื™ืฃ ืžืกืคืจ ืœืฉื ื”ืงื•ื‘ืฅ
  5. ื ื—ื–ื•ืจ ืœื ืงื•ื“ื” ื”ืจืืฉื•ื ื” ืขื“ ืœื”ื•ืจื“ื” ืžืœืื” ืฉืœ ื”ืงื•ื‘ืฅ

ืžื™ื–ื•ื’ ื—ืœืงื™ื ืœืงื•ื‘ืฅ ืื—ื“

ืœืื—ืจ ืฉื”ื—ืœืง ื”ืื—ืจื•ืŸ ื”ืชืงื‘ืœ, ื™ืฉ ืฆื•ืจืš ืœืืกื•ืฃ ืื•ืชื ืœืงื•ื‘ืฅ ืฉืœื ืื—ื“.

ื”ืžืฉื™ืžื” ืคืฉื•ื˜ื”:

  1. ืงืจื™ืืช ื›ืœ ื”ื—ืœืงื™ื ื‘ื‘ืช ืื—ืช
  2. ืื ื‘ื—ืœืง ืžืกื•ื™ื ื”ืžื™ืงื•ื ืื™ื ื• ื‘ืชื™ื ืืคืก, ืื– ื ื›ืชื•ื‘ ืื•ืชื• ืœืคืœื˜, ืื—ืจืช ื ื›ืชื•ื‘ ืืคืก

ืคื•ื ืงืฆื™ื” 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

ืžืกืงื ื”

ืœืคื™ื›ืš, ื”ืฆืœื—ื ื• ืœื”ื•ืจื™ื“ ื•ืœื”ืจื›ื™ื‘ ืืช ื”ืงื•ื‘ืฅ ื”ื–ื” ื‘ืžื—ืฉื‘. ืœืื—ืจ ื”ืžื™ื–ื•ื’, ืฉืœืคืชื™ ืืช ืงื•ื‘ืฅ ื”ื˜ื•ืจื ื˜ ืžื”ื˜ืื‘ืœื˜. ื”ืชืงื ืชื™ ืœืงื•ื— ื˜ื•ืจื ื˜ ื‘ืžื—ืฉื‘ ืฉืœื™ ื•ื‘ื“ืงืชื™ ืื™ืชื• ืืช ื”ืงื•ื‘ืฅ.

ื ื™ืชืŸ ืœื”ืฉืื™ืจ ืืช ื”ื—ืœืง ื”ืื—ืจื•ืŸ ืฉื”ื•ืจื“ ื‘ื˜ืื‘ืœื˜ ื‘ื”ืคืฆื”, ืืš ืขืœื™ืš ืœืืคืฉืจ ื‘ื“ื™ืงื” ื—ื•ื–ืจืช ืฉืœ ื”ื—ืœืงื™ื ืœืคื ื™ ื–ื” ื•ืœื‘ื˜ืœ ืืช ื”ืกื™ืžื•ืŸ ืฉืœ ื”ืงื•ื‘ืฅ ื›ื“ื™ ืฉืœื ื™ื•ืจื™ื“ ืฉื•ื‘.

ื‘ืฉื™ืžื•ืฉ:

  1. ืœืงื•ื— Flud torrent ื‘ื˜ืื‘ืœื˜.
  2. ืœืงื•ื— ื˜ื•ืจื ื˜ qBittorent ื‘ืžื—ืฉื‘.
  3. ืชืกืจื™ื˜ ืœื•ืื”

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”