Iwwer eng komesch Method fir Festplack Plaz ze spueren

En anere Benotzer wëll en neit Stéck Daten op der Festplack schreiwen, awer hien huet net genuch fräi Plaz fir dat ze maachen. Ech wëll och näischt läschen, well "Alles ass ganz wichteg an néideg." A wat solle mir domatter maachen?

Keen huet dëse Problem. Et gi Terabytes vun Informatioun op eise Festplazen, an dëse Betrag tendéiert net ze reduzéieren. Awer wéi eenzegaarteg ass et? Am Endeffekt sinn all Dateie just Sets vu Bits vun enger gewësser Längt, an héchstwahrscheinlech ass deen neien net vill anescht wéi deen dee scho gespäichert ass.

Et ass kloer datt d'Sich no Informatiounsstécker, déi schonn op enger Festplack gespäichert sinn, ass, wann net e Feeler, dann op d'mannst net eng effektiv Aufgab. Op der anerer Säit, wann den Ënnerscheed kleng ass, da kënnt Dir et e bëssen upassen ...

Iwwer eng komesch Method fir Festplack Plaz ze spueren

TL;DR - den zweeten Versuch iwwer eng komesch Method ze schwätzen fir Daten mat JPEG Dateien ze optimiséieren, elo an enger méi verständlecher Form.

Iwwer Stécker an Ënnerscheed

Wann Dir zwee komplett zoufälleg Stécker vun Daten huelen, dann am Duerchschnëtt d'Halschent vun de Stécker, déi se enthalen, fällt zesummen. Tatsächlech, ënnert de méigleche Layouten fir all Pair ('00, 01, 10, 11′), genau d'Halschent hunn déiselwecht Wäerter, alles ass einfach hei.

Awer natierlech, wa mir just zwee Dateien huelen an een op déi zweet passen, da verléiere mir ee vun hinnen. Wa mir d'Ännerunge späicheren, wäerte mir einfach nei erfannen Delta Kodéierung, déi ouni eis perfekt existéiert, obwuel et normalerweis net fir déiselwecht Zwecker benotzt gëtt. Mir kënnen probéieren eng méi kleng Sequenz an eng méi grouss ze embedéieren, awer och esou riskéiere mir kritesch Segmenter vun Daten ze verléieren wa mir se reckless mat alles benotzen.

Tëscht wat a wat kann dann den Ënnerscheed eliminéiert ginn? Gutt, dat ass, eng nei Datei, déi vum Benotzer geschriwwe gëtt, ass just eng Sequenz vu Bits, mat där mir näischt eleng maache kënnen. Da musst Dir just sou Bits op der Festplack fannen, datt se geännert kënne ginn ouni den Ënnerscheed ze späicheren, sou datt Dir hire Verloscht ouni sérieux Konsequenzen iwwerliewe kënnt. An et mécht Sënn net nëmmen d'Datei op der FS selwer z'änneren, awer e puer manner sensibel Informatioun dobannen. Awer wéi eng a wéi?

Upassungsmethoden

Lossy kompriméiert Dateie kommen zur Rettung. All dës jpegs, mp3s an anerer, obwuel lossy Kompressioun, enthalen eng Rëtsch vu Stécker déi sécher geännert kënne ginn. Et ass méiglech fortgeschratt Techniken ze benotzen déi hir Komponenten onmerkbar änneren a verschiddene Kodéierungsstadien. Waart. Fortgeschratt Techniken ... onmerkbar Modifikatioun ... ee bëssen an en anert ... et ass bal wéi Steganographie!

Tatsächlech erënnert eng Informatioun an eng aner un hir Methoden wéi näischt anescht. Ech sinn och beandrockt vun der Onmerkbarkeet vun den Ännerungen, déi un de mënschleche Sënner gemaach goufen. Wou d'Weeër divergéieren ass am Geheimnis: eis Aufgab kënnt drop erof datt de Benotzer zousätzlech Informatioun op seng Festplack aginn; et wäert him nëmme schueden. Hie wäert erëm vergiessen.

Dofir, obwuel mir se benotze kënnen, musse mir e puer Ännerungen maachen. An da wäert ech soen a weisen se mat dem Beispill vun enger vun den existente Methoden an engem gemeinsame Dateiformat.

Iwwer jackals

Wann Dir et wierklech dréckt, ass et déi kompriméierbarst Saach op der Welt. Mir schwätzen natierlech iwwer JPEG Dateien. Net nëmmen ginn et Tonne vun Tools an existéierende Methoden fir Daten anzebezéien, awer et ass dat populärste Grafikformat op dësem Planéit.

Iwwer eng komesch Method fir Festplack Plaz ze spueren

Wéi och ëmmer, fir net an Hondszucht ze engagéieren, musst Dir Äert Aktivitéitsfeld an Dateie vun dësem Format limitéieren. Keen huet monochrome Quadrate gär, déi duerch exzessiv Kompressioun erscheinen, also musst Dir Iech limitéieren fir mat enger scho kompriméierter Datei ze schaffen, evitéieren recoding. Méi spezifesch, mat ganzer Koeffizienten, déi no Operatiounen verantwortlech bleiwen fir Datenverloscht - DCT a Quantiséierung, déi perfekt am Kodéierungsschema ugewise gëtt (dank der Wiki vun der Bauman Nationalbibliothéik):
Iwwer eng komesch Method fir Festplack Plaz ze spueren

Et gi vill méiglech Methoden fir jpeg Dateien ze optimiséieren. Et gëtt Verloschtlos Optimisatioun (jpegtran), et gëtt Optimisatioun "kee Verloscht“, déi tatsächlech eppes anescht bäidroen, awer mir këmmeren eis net ëm si. No allem, wann de Benotzer bereet ass eng Informatioun an eng aner z'integréieren fir de fräie Plaatz ze vergréisseren, dann huet hien entweder seng Biller viru laanger Zäit optimiséiert, oder wëll dat guer net maachen aus Angscht virum Qualitéitsverloscht.

F5

Eng ganz Famill vun Algorithmen passt op dës Konditiounen, mat deenen Dir Iech vertraut kënnt an dëser gutt Presentatioun. Déi fortgeschratt vun hinnen ass den Algorithmus F5 vum Andreas Westfeld, schafft mat de Koeffizienten vun der Hellegkeetskomponent, well d'mënschlecht Auge am mannsten empfindlech op seng Ännerungen ass. Ausserdeem benotzt et eng Embedding Technik baséiert op Matrixkodéierung, wat et méiglech mécht manner Ännerungen ze maachen wann Dir déiselwecht Quantitéit un Informatioun embeet, wat méi grouss ass d'Gréisst vum Container benotzt.

D'Ännerunge selwer kachen erof fir den absolute Wäert vun de Koeffizienten ënner bestëmmte Konditiounen ëm een ​​ze reduzéieren (dat heescht net ëmmer), wat Iech erlaabt F5 ze benotzen fir Datenlagerung op Ärer Festplack ze optimiséieren. De Punkt ass datt de Koeffizient no sou enger Ännerung héchstwahrscheinlech manner Bits no der Huffman Kodéierung besetzt wéinst der statistescher Verdeelung vu Wäerter am JPEG, an déi nei Nullen ginn e Gewënn wann se se mat RLE codéieren.

Déi néideg Ännerunge kachen erof op d'Eliminatioun vum Deel verantwortlech fir d'Geheimnis (Passwuert-Ënnerarrangement), wat Ressourcen an Ausféierungszäit spuert, an e Mechanismus bäizefügen fir mat ville Dateien ze schaffen amplaz vun enger gläichzäiteg. De Lieser ass onwahrscheinlech am Ännerungsprozess méi am Detail interesséiert ze sinn, also loosst eis op eng Beschreiwung vun der Ëmsetzung weidergoen.

Héich techneschen

Fir ze weisen wéi dës Approche funktionnéiert, hunn ech d'Method a pure C implementéiert an eng Rei Optimisatiounen souwuel wat d'Ausféierungsgeschwindegkeet an d'Erënnerung ugeet (Dir kënnt Iech net virstellen wéi vill dës Biller ouni Kompressioun weien, och virum DCT). Cross-Plattform erreecht mat enger Kombinatioun vu Bibliothéiken libjpeg, pcre и tinydir, fir déi mir hinnen Merci soen. All dëst gëtt duerch 'make' zesummegesat, sou datt Windows Benotzer e puer Cygwin fir sech selwer installéiere fir d'Evaluatioun, oder mat Visual Studio a Bibliothéiken eleng ëmzegoen.

D'Ëmsetzung ass verfügbar a Form vun engem Konsol Utility a Bibliothéik. Déi interesséiert kënne méi gewuer ginn iwwer d'Benotzung vun der leschter am Readme am Repository op Github, de Link op deen ech um Enn vum Post befestegt.

Wéi benotzen?

Virsiichteg. D'Biller, déi fir d'Verpakung benotzt ginn, ginn ausgewielt andeems Dir e reegelméissegen Ausdrock am gegebene Root-Verzeichnis benotzt. Beim Fäerdegstellung kënnen d'Dateien no Wëllen a senge Grenze geréckelt, ëmbenannt a kopéiert ginn, Datei- a Betribssystemer änneren, asw.. Dir sollt awer extrem virsiichteg sinn an den direkten Inhalt op kee Fall änneren. De Wäert vun souguer e bëssen verléieren kann et onméiglech maachen Informatiounen ze recuperéieren.

Nom Ofschloss léisst d'Utility eng speziell Archivdatei mat all déi néideg Informatioune fir d'Upackung, inklusiv Daten iwwer d'Biller déi benotzt ginn. Selwer weegt et ongeféier e puer Kilobytes an huet kee wesentlechen Impakt op de besat Disk Space.

Dir kënnt déi méiglech Kapazitéit analyséieren mat dem '-a' Fändel: './f5ar -a [Sich Dossier] [Perl-kompatibel regulär Ausdrock]'. D'Verpakung gëtt mam Kommando './f5ar -p [Sich Dossier] [Perl-kompatibel regulärem Ausdrock] [gepackte Datei] [Archivnumm]' gemaach, an d'Auspackung mat './f5ar -u [Archivdatei] [erholl Dateinumm] ]'.

Demonstratioun vun Aarbecht

Fir d'Effektivitéit vun der Method ze weisen, hunn ech eng Sammlung vun 225 absolut gratis Fotoen vun Hënn aus dem Service eropgelueden Unsplash a fonnt an den Dokumenter e grousse pdf vu 45 Meter vum zweete Band Konscht vum Programméiere Knuta.

D'Sequenz ass ganz einfach:

$ 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/

Screenshots fir Fans

Iwwer eng komesch Method fir Festplack Plaz ze spueren

Déi ausgepackt Datei kann a soll nach ëmmer gelies ginn:

Iwwer eng komesch Method fir Festplack Plaz ze spueren

Wéi Dir gesitt, vun der ursprénglecher 633 + 36 == 669 Megabytes vun Daten op der Festplack, si mer op méi agreabel 551 komm. Esou e radikalen Ënnerscheed gëtt erkläert duerch d'Ofsenkung vun de Wäerter vun de Koeffizienten, déi hir Auswierkungen beaflossen. spéider Verléierslos Kompressioun: Reduktioun vun engem vun engem kann einfach "e puer Bytes aus der leschter Datei ofschneiden. Wéi och ëmmer, dëst ass nach ëmmer en Dateverloscht, och wann en extrem klengen, deen Dir musst ophalen.

Glécklecherweis sinn se absolut onsichtbar fir d'Aen. Ënnert dem Spoiler (zënter Habrastorage kann net grouss Dateien handhaben), kann de Lieser den Ënnerscheed souwuel duerch Aen an hir Intensitéit evaluéieren, kritt andeems Dir d'Wäerter vun der geännerter Komponent aus dem Original subtrahéiert: den Original, mat Informatiounen bannen, den Ënnerscheed (wat méi däischter d'Faarf ass, wat den Ënnerscheed am Block méi kleng ass).

Amplaz vun enger Konklusioun

Wann Dir all dës Schwieregkeeten berécksiichtegt, eng Festplack kafen oder alles op d'Wollek eropluede kann wéi eng vill méi einfach Léisung fir de Problem schéngen. Awer och wa mir elo an esou enger wonnerbarer Zäit liewen, ginn et keng Garantien datt et muer nach méiglech ass online ze goen an all Är extra Donnéeën iergendwou eropzelueden. Oder gitt an de Buttek a kaaft selwer eng aner dausend Terabyte Festplack. Awer Dir kënnt ëmmer existéierend Haiser benotzen.

-> GitHub

Source: will.com

Setzt e Commentaire