Cits lietotÄjs vÄlas ierakstÄ«t jaunu datu daļu cietajÄ diskÄ, taÄu viÅam nav pietiekami daudz brÄ«vas vietas, lai to izdarÄ«tu. Es arÄ« nevÄlos neko dzÄst, jo "viss ir ļoti svarÄ«gi un nepiecieÅ”ams". Un ko mums ar to darÄ«t?
Nevienam nav Ŕīs problÄmas. MÅ«su cietajos diskos ir terabaiti informÄcijas, un Å”im apjomam nav tendence samazinÄties. Bet cik unikÄls tas ir? Galu galÄ visi faili ir tikai noteikta garuma bitu komplekti, un, visticamÄk, jaunais daudz neatŔķiras no jau saglabÄtÄ.
Ir skaidrs, ka cietajÄ diskÄ jau saglabÄtas informÄcijas meklÄÅ”ana ir ja ne neveiksme, tad vismaz ne efektÄ«vs uzdevums. SavukÄrt, ja starpÄ«ba ir maza, tad var nedaudz pieregulÄt...
TL;DR - otrais mÄÄ£inÄjums runÄt par dÄ«vainu datu optimizÄÅ”anas metodi, izmantojot JPEG failus, tagad saprotamÄkÄ formÄ.
Par bitiem un atŔķirÄ«bÄm
Ja Åem divus pilnÄ«gi nejauÅ”us datu gabalus, tad vidÄji puse no tajos esoÅ”ajiem bitiem sakrÄ«t. PatieÅ”Äm, no katra pÄra iespÄjamajiem izkÄrtojumiem ('00, 01, 10, 11ā²) tieÅ”i pusei ir vienÄdas vÄrtÄ«bas, Å”eit viss ir vienkÄrÅ”i.
Bet, protams, ja mÄs vienkÄrÅ”i paÅemsim divus failus un pielÄgosim vienu otrajam, tad vienu no tiem mÄs zaudÄsim. Ja saglabÄsim izmaiÅas, mÄs vienkÄrÅ”i izgudrosim no jauna
Starp ko un ko tad var novÄrst atŔķirÄ«bu? Nu, tas ir, lietotÄja rakstÄ«ts jauns fails ir tikai bitu secÄ«ba, ar kuru mÄs paÅ”i neko nevaram izdarÄ«t. Tad tikai cietajÄ diskÄ jÄatrod tÄdi biti, lai tos varÄtu nomainÄ«t, nesaglabÄjot starpÄ«bu, lai varÄtu pÄrdzÄ«vot to zaudÄjumu bez nopietnÄm sekÄm. Ir lietderÄ«gi mainÄ«t ne tikai paÅ”u FS failu, bet arÄ« kÄdu mazÄk sensitÄ«vu informÄciju tajÄ. Bet kurÅ” un kÄ?
PielÄgoÅ”anas metodes
PalÄ«gÄ nÄk zaudÄti saspiesti faili. Visi Å”ie jpeg, mp3 un citi, lai arÄ« kompresijas ar zaudÄjumiem, satur virkni bitu, kurus var droÅ”i mainÄ«t. Ir iespÄjams izmantot progresÄ«vas metodes, kas nemanÄmi pÄrveido to komponentus dažÄdos kodÄÅ”anas posmos. Pagaidiet. Uzlabotas tehnikas... nemanÄma modifikÄcija... viens mazliet citÄ... tas ir gandrÄ«z kÄ
PatieÅ”Äm, vienas informÄcijas iegulÅ”ana citÄ atgÄdina viÅas metodes kÄ neko citu. Mani iespaido arÄ« cilvÄka maÅÄs veikto izmaiÅu nemanÄmÄ«ba. Ja ceļi atŔķiras, tas ir noslÄpumÄ: mÅ«su uzdevums ir lietotÄjam ievadÄ«t papildu informÄciju savÄ cietajÄ diskÄ; tas viÅam tikai kaitÄs. ViÅÅ” atkal aizmirsÄ«s.
TÄpÄc, lai gan mÄs varam tos izmantot, mums ir jÄveic dažas izmaiÅas. Un tad es tos pastÄstÄ«Å”u un parÄdÄ«Å”u, izmantojot vienu no esoÅ”ajÄm metodÄm un kopÄ«gu faila formÄtu.
Par Å”akÄļiem
Ja jÅ«s to patieÅ”Äm saspiežat, tÄ ir saspiežamÄkÄ lieta pasaulÄ. MÄs, protams, runÄjam par JPEG failiem. Ir ne tikai daudz rÄ«ku un esoÅ”o metožu datu iegulÅ”anai tajÄ, bet tas ir vispopulÄrÄkais grafikas formÄts uz Ŕīs planÄtas.
TaÄu, lai nenodarbotos ar suÅu audzÄÅ”anu, Å”Äda formÄta failos jÄierobežo sava darbÄ«bas joma. Nevienam nepatÄ«k vienkrÄsaini kvadrÄti, kas parÄdÄs pÄrmÄrÄ«gas saspieÅ”anas dÄļ, tÄpÄc jums ir jÄierobežo darbs ar jau saspiestu failu, izvairoties no pÄrkodÄÅ”anas. PrecÄ«zÄk, ar veselu skaitļu koeficientiem, kas paliek pÄc operÄcijÄm, kas ir atbildÄ«gas par datu zudumu - DCT un kvantÄÅ”anu, kas lieliski tiek parÄdÄ«ta kodÄÅ”anas shÄmÄ (pateicoties BaumaÅas NacionÄlÄs bibliotÄkas wiki):
Ir daudzas iespÄjamÄs metodes jpeg failu optimizÄÅ”anai. Ir optimizÄcija bez zudumiem (jpegtran), ir optimizÄcija "
F5
Šiem nosacījumiem atbilst vesela algoritmu saime, ar kuriem varat iepazīties
PaÅ”as izmaiÅas noved pie tÄ, ka noteiktos apstÄkļos (tas ir, ne vienmÄr) tiek samazinÄta koeficientu absolÅ«tÄ vÄrtÄ«ba par vienu, kas ļauj izmantot F5, lai optimizÄtu datu glabÄÅ”anu cietajÄ diskÄ. Lieta ir tÄda, ka koeficients pÄc Å”ÄdÄm izmaiÅÄm, visticamÄk, aizÅems mazÄk bitu pÄc Hafmena kodÄÅ”anas, jo vÄrtÄ«bu statistiskais sadalÄ«jums ir JPEG formÄtÄ, un jaunÄs nulles dos pieaugumu, kodÄjot tÄs, izmantojot RLE.
NepiecieÅ”amÄs modifikÄcijas ir saistÄ«tas ar to, ka tiek likvidÄta daļa, kas ir atbildÄ«ga par slepenÄ«bu (paroles pÄrkÄrtoÅ”ana), kas ietaupa resursus un izpildes laiku, un tiek pievienots mehÄnisms darbam ar daudziem failiem, nevis pa vienam. Maz ticams, ka lasÄ«tÄju interesÄs izmaiÅu process sÄ«kÄk, tÄpÄc pÄriesim pie ievieÅ”anas apraksta.
AugstÄs tehnoloÄ£ijas
Lai parÄdÄ«tu, kÄ Å”Ä« pieeja darbojas, es ieviesu metodi tÄ«rÄ C un veicu vairÄkas optimizÄcijas gan izpildes Ätruma, gan atmiÅas ziÅÄ (jÅ«s nevarat iedomÄties, cik daudz Å”ie attÄli sver bez saspieÅ”anas, pat pirms DCT). VairÄku platformu, izmantojot bibliotÄku kombinÄciju
IevieÅ”ana ir pieejama konsoles utilÄ«ta un bibliotÄkas veidÄ. Interesenti var uzzinÄt vairÄk par pÄdÄjo izmantoÅ”anu Github repozitorijÄ esoÅ”ajÄ readme, saiti, uz kuru es pievienoÅ”u ieraksta beigÄs.
KÄ lietot?
UzmanÄ«gi. IesaiÅoÅ”anai izmantotie attÄli tiek atlasÄ«ti, meklÄjot, izmantojot regulÄro izteiksmi dotajÄ saknes direktorijÄ. PÄc pabeigÅ”anas failus var pÄrvietot, pÄrdÄvÄt un kopÄt pÄc vÄlÄÅ”anÄs, mainÄ«t failus un operÄtÄjsistÄmas utt. TomÄr jums jÄbÅ«t Ä«paÅ”i uzmanÄ«gam un nekÄdÄ veidÄ nemainiet tÅ«lÄ«tÄjo saturu. Pat viena bita vÄrtÄ«bas zaudÄÅ”ana var padarÄ«t neiespÄjamu informÄcijas atgÅ«Å”anu.
PÄc pabeigÅ”anas utilÄ«ta atstÄj Ä«paÅ”u arhÄ«va failu, kurÄ ir visa izpakoÅ”anai nepiecieÅ”amÄ informÄcija, tostarp dati par izmantotajiem attÄliem. Pats par sevi tas sver apmÄram pÄris kilobaitus un tam nav bÅ«tiskas ietekmes uz aizÅemto diska vietu.
Varat analizÄt iespÄjamo ietilpÄ«bu, izmantojot karogu "-a": "./f5ar -a [meklÄÅ”anas mape] [Ar Perl saderÄ«ga regulÄrÄ izteiksme]". IesaiÅoÅ”ana tiek veikta ar komandu './f5ar -p [meklÄÅ”anas mape] [ar Perl saderÄ«ga regulÄrÄ izteiksme] [iepakots fails] [arhÄ«va nosaukums]' un izpakoÅ”ana tiek veikta ar komandu './f5ar -u [arhÄ«va fails] [atkoptÄ faila nosaukums. ]' .
Darba demonstrÄÅ”ana
Lai parÄdÄ«tu metodes efektivitÄti, es augÅ”upielÄdÄju 225 absolÅ«ti bezmaksas suÅu fotoattÄlu kolekciju no pakalpojuma.
SecÄ«ba ir pavisam vienkÄrÅ”a:
$ du -sh knuth.pdf dogs/
44M knuth.pdf
633M dogs/
$ ./f5ar -p dogs/ .*jpg knuth.pdf dogs.f5ar
Reading compressing file... ok
Initializing the archive... ok
Analysing library capacity... done in 17.0s
Detected somewhat guaranteed capacity of 48439359 bytes
Detected possible capacity of upto 102618787 bytes
Compressing... done in 39.4s
Saving the archive... ok
$ ./f5ar -u dogs/dogs.f5ar knuth_unpacked.pdf
Initializing the archive... ok
Reading the archive file... ok
Filling the archive with files... done in 1.4s
Decompressing... done in 21.0s
Writing extracted data... ok
$ sha1sum knuth.pdf knuth_unpacked.pdf
5bd1f496d2e45e382f33959eae5ab15da12cd666 knuth.pdf
5bd1f496d2e45e382f33959eae5ab15da12cd666 knuth_unpacked.pdf
$ du -sh dogs/
551M dogs/
EkrÄnuzÅÄmumi faniem
IzsaiÅoto failu var un joprojÄm vajadzÄtu lasÄ«t:
KÄ redzat, no sÄkotnÄjiem 633 + 36 == 669 megabaitiem datu cietajÄ diskÄ mÄs nonÄcÄm pie patÄ«kamÄkÄ 551. Å Äda radikÄla atŔķirÄ«ba ir izskaidrojama ar koeficientu vÄrtÄ«bu samazinÄÅ”anos, kas ietekmÄ to sekojoÅ”a bezzudumu saspieÅ”ana: samazinot pa vienam, var viegli ānogriezt pÄris baitus no gala faila. TomÄr tas joprojÄm ir datu zudums, kaut arÄ« ÄrkÄrtÄ«gi mazs, ar ko jums bÅ«s jÄsamierinÄs.
Par laimi, tie ir absolÅ«ti neredzami acÄ«m. Zem spoilera (tÄ kÄ habrastorage nevar apstrÄdÄt lielus failus) lasÄ«tÄjs var novÄrtÄt atŔķirÄ«bu gan pÄc acs, gan to intensitÄtes, kas iegÅ«ta, atÅemot mainÄ«tÄ komponenta vÄrtÄ«bas no oriÄ£inÄla:
TÄ vietÄ, lai noslÄgtu
Å emot vÄrÄ visas Ŕīs grÅ«tÄ«bas, cietÄ diska iegÄde vai visa augÅ”upielÄde mÄkonÄ« var Ŕķist daudz vienkÄrÅ”Äks problÄmas risinÄjums. Bet, lai arÄ« Å”obrÄ«d dzÄ«vojam tik brÄ«niŔķīgÄ laikÄ, nav garantijas, ka rÄ«t vÄl bÅ«s iespÄjams pieslÄgties tieÅ”saistÄ un kaut kur augÅ”upielÄdÄt visus savus papildu datus. Vai arÄ« dodieties uz veikalu un iegÄdÄjieties sev vÄl tÅ«kstoÅ” terabaitu cieto disku. Bet jÅ«s vienmÄr varat izmantot esoÅ”Äs mÄjas.
->
Avots: www.habr.com