Për një metodë të çuditshme për kursimin e hapësirës në hard disk

NjĂ« pĂ«rdorues tjetĂ«r dĂ«shiron tĂ« regjistrojĂ« njĂ« copĂ« tĂ« re tĂ« dhĂ«nash nĂ« hard disk, por i mungon hapĂ«sira e lirĂ« pĂ«r ta bĂ«rĂ« kĂ«tĂ«. Nuk dĂ«shiron as tĂ« fshijĂ« gjĂ«ra, sepse "gjithçka Ă«shtĂ« shumĂ« e rĂ«ndĂ«sishme dhe e nevojshme". ÇfarĂ« do tĂ« bĂ«jmĂ« me tĂ«?

Kjo problem nuk qëndron vetëm te ai. Në hard diskët tanë qëndrojnë terabajt informacione, dhe kjo sasi nuk po duket se po ulet. Por sa unike është ajo? Një fund, të gjitha skedarët janë vetëm grupe bitësh të një gjatësie të caktuar dhe, me shumë gjasa, e reja nuk do të ndryshojë shumë nga ajo që është tashmë ruajtur.

E qartë, që kërkimi për copat e informacionit të ruajtura në hard disk është një detyrë që, nëse nuk dështojnë, së paku nuk është efektive. Në anën tjetër, nëse diferenca është e vogël, atëherë mund ta përshtatim disi...

Për një metodë të çuditshme për kursimin e hapësirës në hard disk

TL;DR — njĂ« pĂ«rpjekje e dytĂ« pĂ«r tĂ« folur pĂ«r njĂ« metodĂ« tĂ« çuditshme tĂ« optimizimit tĂ« tĂ« dhĂ«nave duke pĂ«rdorur skedarĂ« JPEG, tani nĂ« njĂ« formĂ« mĂ« tĂ« kuptueshme.

Për bitët dhe ndryshimin

NĂ«se marrim dy copĂ«za tĂ« dhĂ«nash tĂ« rastit, atyre u pĂ«rputhen mesatarisht gjysma e bitĂ«ve tĂ« pĂ«rmbajtjes. E vĂ«rtetĂ«, nĂ« mesin e variacioneve tĂ« mundshme pĂ«r çdo çift (’00, 01, 10, 11â€Č) saktĂ«sisht gjysma ka vlera tĂ« pĂ«rputhshme, kjo Ă«shtĂ« e thjeshtĂ«.

Por natyrisht, nëse thjesht marrim dy skedarë dhe rregullojmë njëri prej tjetrit, do të humbasim njërin prej tyre. Nëse ruajmë ndryshimet, atëherë thjesht po shpikim kodimin delta, i cili, pa ne, ekziston mjaft mirë, megjithëse zakonisht nuk përdoret për qëllime të tilla. Mund të përpiqemi të integrojmë një sekuencë më të vogël në një më të madhe, por përherë rrezikojmë t'i humbasim segmente kritike të të dhënave në përdorim të menduar.

NdĂ«rsa çfarĂ« dhe çfarĂ« mund tĂ« eliminojmĂ« ndryshimin? DomethĂ«nĂ«, skedari i ri i shkruar nga pĂ«rdoruesi — Ă«shtĂ« thjesht njĂ« sekuencĂ« bitĂ«sh, me tĂ« cilĂ«n vetĂ« nuk mund tĂ« bĂ«jmĂ« asgjĂ«. AtĂ«herĂ« duhet thjesht tĂ« gjejmĂ« nĂ« hard disk kaq bitĂ« qĂ« mund tĂ« modifikohen pa nevojĂ«n pĂ«r tĂ« ruajtur ndryshimin, kĂ«shtu qĂ« mund tĂ« pĂ«rballojmĂ« humbjen e tyre pa pasoja serioze. Dhe ka kuptim tĂ« modifikojmĂ« jo vetĂ«m skedarin e vet nĂ« FS, por disa informacione mĂ« pak tĂ« ndjeshme brenda tij. Por cilat dhe si?

Metodat e përshtatjes

I vijnë në ndihmë skedarët e kompresuar me humbje. Të gjithë këta jpeg, mp3 dhe të tjerë, megjithëse janë kompresim me humbje, përmbajnë shumë bitë që janë të disponueshëm për modifikim të sigurt. Mund të përdoren teknika të avancuara, që modifikojnë në mënyrë të padukshme përbërësit e tyre në pjesë të ndryshme të kodimit. Po prisni. Teknikat e avancuara... modifikimi i padukshëm... bitë e njëri-tjetrit... kjo është pothuajse steganografia!

E vërtetë, integrimi i një informacioni në një tjetër i ngjan shumë metodave të saj. E tëra është se ndryshimet e kryera për organet e ndjeshme njerëzore janë të padukshme. Ajo që ndan rrugët është sekreti: detyra jonë është të vendosim informacion të shtuar në hard diskun e përdoruesit, për të cilin vetëm dëmtohet. Do ta harrojë ndoshta.

Prandaj, edhe pse mund t'i përdorim ato, duhet të kryejmë disa modifikime. Dhe më tej do të flas dhe tregoj për to në shembuj të një prej metodave ekzistuese dhe formatit të njohur të skedarëve.

Për jackalët

NĂ«se do tĂ« kompresosh, kompresimi mĂ« i madh nĂ« botĂ«. ËshtĂ« fjala pĂ«r skedarĂ«t JPEG. Jo vetĂ«m qĂ« ekziston njĂ« ton mjetesh dhe metodash tĂ« njohura pĂ«r integrimin e tĂ« dhĂ«nave nĂ« tĂ«, por ai Ă«shtĂ« formati grafik mĂ« i popullarizuar nĂ« planetin tonĂ«.

Për një metodë të çuditshme për kursimin e hapësirës në hard disk

MegjithatĂ«, pĂ«r tĂ« mos u angazhuar nĂ« mbajtjen e qenve, duhet tĂ« kufizojmĂ« fushĂ«n tonĂ« tĂ« veprimit nĂ« skedarĂ«t e kĂ«tij formati. Askush nuk do tĂ« dojĂ« katrorĂ«t njĂ« ngjyrĂ« qĂ« dalin si rezultat i kompresimit tĂ« tepruar, kĂ«shtu qĂ« duhet tĂ« kufizohemi nĂ« punĂ«n me njĂ« skedar qĂ« Ă«shtĂ« tashmĂ« kompresuar, duke shmangur rikodimin. Konkretisht — me koeficientĂ« tĂ« plotĂ«, tĂ« cilĂ«t mbeten pas operacioneve qĂ« pĂ«rgjigjen pĂ«r humbjen e tĂ« dhĂ«nave — DCP dhe kvantizimin, qĂ« tregohet shkĂ«lqyeshĂ«m nĂ« diagramin e kodimit (faleminderit WikipedisĂ« sĂ« BibliotekĂ«s KombĂ«tare Bauman):
Për një metodë të çuditshme për kursimin e hapësirës në hard disk

Ekzistojnë shumë metoda të mundshme optimizimi për skedarët jpeg. Ka optimizim pa humbje (jpegtran), ka optimizim "pa humbje" që në të vërtetë sjellin disa, por këto nuk na shqetësojnë. Në fund të fundit, nëse përdoruesi është gati të inkorporojë një informacion tjetër në një për të rritur hapësirën e lirë në disk, ai ose e ka optimizuar prej kohësh imazhet e tij, ose nuk dëshiron fare të bëjë këtë për shkak të frikës nga humbja e cilësisë.

F5

Për këto kushte përshtatet një e gjithë familja e algoritmeve, me të cilat mund të njihemi në këtë prezantim të mirë. Algoritmi më i avancuar prej tyre është algoritmi F5 me autorësisë së Andreas Westfeld, i cili punon me koeficientët e komponentës së ndriçimit, pasi syri njerëzor është më pak i ndjeshëm ndaj ndryshimeve të saj. Më tepër, ai përdor një metodë të inkorporimit të bazuar në kodimin e matricave, që i lejon të bëj më pak ndryshime gjatë inkorporimit të të njëjtit sasi informacioni, sa më i madh të jetë kontenieri i përdorur.

Ndryshimet e vetme pĂ«rfshihen nĂ« uljen e vlerĂ«s absolute tĂ« koeficientĂ«ve me njĂ« njĂ«si nĂ« kushte tĂ« caktuara (pra, jo gjithmonĂ«), gjĂ« qĂ« lejon pĂ«rdorimin e F5 pĂ«r optimizimin e ruajtjes sĂ« tĂ« dhĂ«nave nĂ« disqe tĂ« forta. ËshtĂ« e vĂ«rtetĂ« qĂ« koeficienti pas kĂ«tij ndryshimi, me probabilitet, do tĂ« zĂ«rĂ« mĂ« pak bita pas kodimit tĂ« Huffmanit pĂ«r shkak tĂ« shpĂ«rndarjes statistikore tĂ« vlerave nĂ« JPEG, dhe zero tĂ« reja do tĂ« ndihmojnĂ« nĂ« kodimin e tyre me RLE.

Modifikimet e nevojshme e kanë të reduktuar pjesën që lidhet me sekretin (permutimi i fjalëkalit), i cili lejon kursim të burimeve dhe kohës së ekzekutimit, dhe shtimin e mekanizmave për të punuar me shumë skedarë njëherësh. Detajet e procesit të ndryshimit ndoshta nuk do të interesojnë lexuesin, prandaj kalojmë në përshkrimin e implementimit.

Teknologji të larta

PĂ«r tĂ« demonstruar funksionimin e njĂ« qasje tĂ« tillĂ«, realizova njĂ« metodĂ« nĂ« C tĂ« pastĂ«r dhe kreva njĂ« sĂ«rĂ« optimizimesh si pĂ«r shpejtĂ«sinĂ« e ekzekutimit, ashtu edhe pĂ«r memorinĂ« (nuk do ta besonit sa peshĂ« kanĂ« kĂ«to figura pa kompresim, madje deri nĂ« DCT). Kros-platformĂ«s e arrijmĂ« duke pĂ«rdorur njĂ« kombinim bibliotekash libjpeg, pcre dhe tinydir, pĂ«r kĂ«tĂ« i falenderoj. I gjithĂ« ky proces grumbullohet me ‘make’, prandaj pĂ«rdoruesit e Windows duhet tĂ« instalojnĂ« ndonjĂ« Cygwin ose tĂ« dinĂ« tĂ« punojnĂ« me Visual Studio dhe bibliotekat vetĂ«.

Implementimi është i disponueshëm në formën e një utilitari konsolë dhe bibliotekë. Të interesuarit për përdorimin e kësaj të fundit mund të informohen më shumë në ridhmi në repositorin në GitHub, për të cilin do të japë lidhjen në fund të postit.

Si ta përdor?

Me kujdes. Imazhet e përdorura për paketimin zgjidhen me kërkimin nga një shprehje të rregullt në direktorinë e dhënë. Pas përfundimit, skedarët mund të zhvendosen, riemërohen dhe kopjohen sipas dëshirës brenda saj, të ndryshojnë sistemet e skedarëve dhe operacioneve etj. Megjithatë, duhet të jeni jashtëzakonisht të kujdesshëm dhe të mos ndryshoni përmbajtjen e drejtpërdrejt. Humbja e edhe një bita mund të sjellë paaftësi për të rikuperuar informacionin.

Pas përfundimit të punës, utilitari lë një skedar arkiv të veçantë, që përmban të gjitha informatat e nevojshme për shpërbërjen, duke përfshirë të dhënat mbi imazhet e përdorura. Ai vetë peshohet rreth disa kilobit dhe nuk ka ndonjë ndikim të rëndësishëm në hapësirën e zënë në disk.

Mund tĂ« analizoni kapacitetin e mundshĂ«m me ndihmĂ«n e flamurit ‘-a’: ‘./f5ar -a [folderi i kĂ«rkimit] [shprehje e rregullt pĂ«rkatĂ«se Perl]’. Paketimi realizohet me urdhĂ«rin ‘./f5ar -p [folderi i kĂ«rkimit] [shprehje e rregullt pĂ«rkatĂ«se Perl] [skedari i paketuar] [emri i arkivĂ«s]’, ndĂ«rsa shpĂ«rbĂ«rja me ‘./f5ar -u [skedari i arkivĂ«s] [emri i skedarit tĂ« rikuperuar]’.

Demonstrimi i funksionimit

Për të treguar efektivitetin e metodës, kam ngarkuar një koleksion prej 225 fotografish të lira për qentë nga shërbimi Unsplash dhe pata ndodhur në dokumentet një pdf të madhe me 45 megabajt të vëllimit të dytë Artet e Programimit Knuth.

Se kuadri është mjaft i thjeshtë:

$ du -sh knuth.pdf dogs/
44M knuth.pdf
633M dogs/

$ ./f5ar -p dogs/ .*jpg knuth.pdf dogs.f5ar
Leximi i skedarit të kompresimit... në rregull
Inizializimi i arkivës... në rregull
Analizimi i kapacitetit të bibliotekës... u përfundua në 17.0s
Kapasiteti disi i garantuar i zbuluar është 48439359 bytes
Kapaciteti i mundshëm i zbuluar deri në 102618787 bytes
Kompresimi... përfunduar në 39.4s
Ruajtja e arkivës... në rregull

$ ./f5ar -u dogs/dogs.f5ar knuth_unpacked.pdf
Inizializimi i arkivës... në rregull
Leximi i skedarit të arkivës... në rregull
Futja e skedarëve në arkiv... e përfunduar në 1.4s
Shpërbërja... e përfunduar në 21.0s
Shkrimi i të dhënave të shkëputura... në rregull

$ sha1sum knuth.pdf knuth_unpacked.pdf
5bd1f496d2e45e382f33959eae5ab15da12cd666 knuth.pdf
5bd1f496d2e45e382f33959eae5ab15da12cd666 knuth_unpacked.pdf

$ du -sh dogs/
551M dogs/

Skrinshote për adhuruesit

Për një metodë të çuditshme për kursimin e hapësirës në hard disk

Skedari i shpërbërë mund të lexohet dhe duhet të lexohet:

Për një metodë të çuditshme për kursimin e hapësirës në hard disk

Siç duket, nga 633 + 36 == 669 megabajt tĂ« dhĂ«nash nĂ« disk, arritĂ«m nĂ« 551 mĂ« tĂ« kĂ«ndshme. Kjo ndryshim radikal shpjegohet nga ajo ulje e vlerave tĂ« koeficientĂ«ve, qĂ« ndikon nĂ« kompresimin e tyre tĂ« mĂ«vonshĂ«m pa humbje: ulja e njĂ« shifre me vetĂ«m njĂ« njĂ«si mund tĂ« ndihmojĂ« nĂ« ‘prerjen’ e disa bajtĂ«ve nga skedari pĂ«rfundimtar. SidoqoftĂ«, kĂ«to janĂ« akoma humbje tĂ« dhĂ«nash, ndonĂ«se shumĂ« tĂ« vogla, me tĂ« cilat do tĂ« duhet tĂ« pajtohemi.

Fatkeqësisht, për syrin ato nuk janë të dukshme. Nën spoilerin (pasi habrastorage nuk mund të përballojë skedarë të mëdhenj), lexuesi mund të vlerësojë ndryshimin si në pamje ashtu edhe intensitetin e tyre, të marrë si diferencë midis vlerave të komponentës së ndryshuar dhe origjinalit: origjinali, me informacion brenda, diferenca (sa më e zbehtë të jetë ngjyra, aq më pak është ndryshimi në bllok).

Në vend të përfundimit

Duke këtyre vështirësive, blerja e një disku të fortë ose ngarkimi i të gjitha të dhënave në re mund të duket si një zgjidhje më e thjeshtë. Megjithatë, edhe pse jetojmë në një kohë kaq të bukur, nuk ka garanci se nesër do të mund të lidhemi në internet dhe të ngarkojmë të dhënat tona të tepërta. Ose të shkojmë në dyqan dhe të blejmë një disk të ri me kapacitet një mijë terabyte. Por përdorimi i atyre që kemi në shtëpi mund të bëhet gjithmonë.

-> GitHub

Burimi: habr.com

Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Bleni hostim tĂ« besueshĂ«m pĂ«r faqe me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster