අභියෝගය:
අන්තර්ජාලය නොමැතිව පරිගණකයක් ඇත, නමුත් USB හරහා ගොනුව මාරු කළ හැකිය. මෙම ගොනුව මාරු කළ හැකි අන්තර්ජාලය සමඟ ටැබ්ලටයක් ඇත. ඔබට ඔබගේ ටැබ්ලටයේ අවශ්ය ටොරන්ට් බාගත කළ හැක, නමුත් ප්රමාණවත් නිදහස් ඉඩක් නොමැත. ටොරන්ට් එකේ ෆයිල් එකයි ලොකුයි.
විසඳුම සඳහා මාර්ගය:
මම බාගන්න ටොරන්ට් එක පටන් ගත්තා. නිදහස් ඉඩ බොහෝ දුරට නැති වූ විට, මම බාගත කිරීම විරාම කළෙමි. මම ටැබ්ලටය පරිගණකයට සම්බන්ධ කර ගොනුව ටැබ්ලටයෙන් පරිගණකයට ගෙන ගියෙමි. මම නැවතුනෙමි, මා පුදුමයට පත් කරමින් ගොනුව නැවත නිර්මාණය වී කිසිවක් සිදු නොවූවාක් මෙන් ටොරන්ට් එක දිගටම බාගත විය.
ටොරන්ට් ක්ලයන්ට් විසින් ලැබුණු දත්ත ලියන ගොනුවට ස්පාර්ස් ධජය සකසන නිසා, පද්ධතිය එකවර 16GB වෙන් කිරීමට උත්සාහ නොකරන අතර 4GB ට වඩා වැඩි ගොනුවකට ලිවීමට උත්සාහ කිරීමේදී දෝෂයක් සිදු නොවේ.
ක්රියා පටිපාටිය හතර වතාවක් පුනරුච්චාරණය කිරීමෙන් පසු, මගේ පරිගණකයට එකම ටොරන්ට් එකේ විවිධ කොටස් අඩංගු ලිපිගොනු හතරක් ලැබුණි. දැන් ඉතිරිව ඇත්තේ ඒවා එකට තැබීමයි. ක්රියා පටිපාටිය අත්යවශ්යයෙන්ම සරලයි. ශුන්ය බයිට් ගොනු හතරෙන් එකක දී ඇති ස්ථානයක තිබේ නම් එය වෙනත් අගයකින් ප්රතිස්ථාපනය කළ යුතුය.
එවැනි සරල වැඩසටහනක් අන්තර්ජාලයේ තිබිය යුතු බව මට පෙනී ගියේය. එවැනි ගැටලුවකට කිසිවකු මුහුණ දී නැද්ද? නමුත් එය සෙවිය යුතු මූල පද මොනවාදැයි මා නොදන්නා බව මට වැටහුණි. ඒ නිසා මම ඉක්මනින්ම මේ වැඩේට Lua ස්ක්රිප්ට් එකක් හදලා දැන් ඒක Optimize කරලා තියෙනවා. මට බෙදා ගැනීමට අවශ්ය වන්නේ මෙයයි.
කොටස් වශයෙන් ටොරන්ට් බාගත කිරීම
- පළමු උපාංගයේ ටොරන්ට් බාගත කිරීම ආරම්භ කරන්න
- 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
නිගමනය
මේ අනුව, අපට මෙම ගොනුව පරිගණකයකට බාගත කර එකලස් කිරීමට හැකි විය. ඒකාබද්ධයෙන් පසු, මම ටැබ්ලටයෙන් ටොරන්ට් ගොනුව ඉවතට ගත්තෙමි. මම මගේ පරිගණකයේ ටොරන්ට් සේවාදායකයක් ස්ථාපනය කර එය සමඟ ගොනුව පරීක්ෂා කළෙමි.
ටැබ්ලටයේ අවසන් වරට බාගත කළ කොටස බෙදා හැරීම මත තැබිය හැකිය, නමුත් ඔබ මෙයට පෙර කොටස් නැවත පරීක්ෂා කිරීම සක්රීය කර ගොනුව නැවත බාගත නොවන පරිදි සලකුණු නොකරන්න.
භාවිතා කළේ:
- ටැබ්ලටයක් මත ෆ්ලඩ් ටොරන්ට් සේවාදායකයා.
- පරිගණකයේ ටොරන්ට් සේවාදායකයා qBittorent.
Lua පිටපත
මූලාශ්රය: www.habr.com