Ang laing tiggamit gusto nga magsulat og bag-ong piraso sa datos sa hard drive, apan wala siyay igong libre nga luna aron mahimo kini. Dili usab nako gusto nga tangtangon ang bisan unsang butang, tungod kay "ang tanan hinungdanon ug kinahanglan." Ug unsay angay natong buhaton niini?
Walay usa nga adunay niini nga problema. Adunay mga terabyte nga impormasyon sa among mga hard drive, ug kini nga kantidad dili mous-os. Apan unsa kini ka talagsaon? Sa katapusan, ang tanan nga mga file mga set lang sa mga piraso sa usa ka piho nga gitas-on ug, lagmit, ang bag-o dili kaayo lahi sa usa nga gitipigan na.
Klaro nga ang pagpangita alang sa mga piraso sa impormasyon nga gitipigan na sa usa ka hard drive, kung dili usa ka kapakyasan, nan labing menos dili usa ka epektibo nga buluhaton. Sa laing bahin, kung gamay ra ang kalainan, mahimo nimong usbon kini gamay ...
TL; DR - ang ikaduha nga pagsulay sa paghisgot bahin sa usa ka katingad-an nga pamaagi sa pag-optimize sa datos gamit ang mga JPEG file, karon sa mas masabtan nga porma.
Mahitungod sa mga tipik ug kalainan
Kung magkuha ka og duha ka bug-os nga random nga mga piraso sa datos, nan sa aberids nga katunga sa mga piraso nga anaa niini magkatakdo. Sa tinuud, taliwala sa posible nga mga layout alang sa matag pares ('00, 01, 10, 11β²), eksakto nga katunga adunay parehas nga kantidad, ang tanan yano dinhi.
Apan siyempre, kung magkuha lang kita og duha ka mga file ug mohaum sa usa sa ikaduha, nan mawala ang usa niini. Kung gitipigan namon ang mga pagbag-o, magbag-o lang kami
Taliwala sa unsa ug unsa unya ang mahimo nga mawala ang kalainan? Aw, kana mao, ang usa ka bag-ong file nga gisulat sa tiggamit usa ra ka han-ay sa mga tipik, diin dili kami makahimo bisan unsa sa iyang kaugalingon. Unya kinahanglan nimo nga makit-an ang ingon nga mga piraso sa hard drive nga mahimo silang mabag-o nga dili kinahanglan nga tipigan ang kalainan, aron mabuhi ka sa ilang pagkawala nga walaβy grabe nga mga sangputanan. Ug makatarunganon nga usbon dili lang ang file sa FS mismo, apan ang pipila nga dili kaayo sensitibo nga kasayuran sa sulod niini. Apan hain ug sa unsang paagi?
Mga pamaagi sa pagpahiangay
Ang mga nawala nga gi-compress nga mga file moabut aron sa pagluwas. Ang tanan nga kini nga mga jpeg, mp3 ug uban pa, bisan kung nawala ang kompresyon, adunay daghang mga piraso nga luwas nga mabag-o. Posible ang paggamit sa mga advanced nga teknik nga dili mahibal-an nga nagbag-o sa ilang mga sangkap sa lainlaing mga yugto sa pag-encode. Hulat. Advanced nga mga teknik... dili mamatikdan nga pagbag-o... usa ka gamay ngadto sa lain... kini halos sama
Sa tinuud, ang pagsulud sa usa ka kasayuran sa lain nagpahinumdom sa iyang mga pamaagi nga walaβy lain. Nakadayeg usab ako sa pagkadili mamatikdan sa mga pagbag-o nga gihimo sa mga igbalati sa tawo. Kung diin ang mga agianan magkalainlain naa sa sekreto: ang among buluhaton moabut sa tiggamit nga magbutang dugang nga kasayuran sa iyang hard drive; makadaot ra kini kaniya. Makalimot na pud siya.
Busa, bisag magamit nato kini, kinahanglang maghimo kitag pipila ka kausaban. Ug unya akong isulti ug ipakita kanila gamit ang panig-ingnan sa usa sa mga naa na nga pamaagi ug usa ka sagad nga format sa file.
Mahitungod sa mga irong ihalas
Kung pugson gyud nimo kini, kini ang labing compressible nga butang sa kalibutan. Siyempre, naghisgot kami bahin sa mga file nga JPEG. Dili lamang adunay tonelada nga mga himan ug kasamtangan nga mga pamaagi alang sa pag-embed sa datos niini, apan kini ang pinakapopular nga format sa mga graphic niini nga planeta.
Bisan pa, aron dili moapil sa pagpasanay sa iro, kinahanglan nimo nga limitahan ang imong natad sa kalihokan sa mga file sa kini nga format. Walay usa nga ganahan sa monochrome nga mga kwadro nga makita tungod sa sobra nga compression, mao nga kinahanglan nimo nga limitahan ang imong kaugalingon sa pagtrabaho sa usa ka na-compress nga file, paglikay sa recoding. Labaw nga espesipiko, nga adunay mga integer coefficients, nga nagpabilin human sa mga operasyon nga responsable sa pagkawala sa datos - DCT ug quantization, nga hingpit nga gipakita sa encoding scheme (salamat sa wiki sa Bauman National Library):
Adunay daghang posible nga mga pamaagi sa pag-optimize sa jpeg file. Adunay lossless optimization (jpegtran), adunay optimization "
F5
Ang usa ka tibuuk nga pamilya sa mga algorithm mohaum niini nga mga kondisyon, nga mahimo nimong pamilyar sa imong kaugalingon
Ang mga pagbag-o mismo nagpabukal sa pagkunhod sa hingpit nga kantidad sa mga coefficient sa usa sa ilawom sa pipila nga mga kondisyon (nga mao, dili kanunay), nga nagtugot kanimo sa paggamit sa F5 aron ma-optimize ang pagtipig sa datos sa imong hard drive. Ang punto mao nga ang koepisyent pagkahuman sa ingon nga pagbag-o lagmit nga mag-okupar sa labi ka gamay nga mga piraso pagkahuman sa pag-encode sa Huffman tungod sa pag-apod-apod sa istatistika sa mga kantidad sa JPEG, ug ang mga bag-ong mga zero maghatag usa ka ganansya kung gi-encode kini gamit ang RLE.
Ang gikinahanglan nga mga pagbag-o nagsugod sa pagwagtang sa bahin nga responsable sa sekreto (pag-usab sa password), nga makatipig sa mga kahinguhaan ug oras sa pagpatuman, ug pagdugang usa ka mekanismo sa pagtrabaho sa daghang mga file imbis nga usa sa usa ka higayon. Ang magbabasa dili tingali interesado sa proseso sa pagbag-o sa mas detalyado, busa magpadayon kita sa usa ka paghulagway sa pagpatuman.
Taas nga teknolohiya
Aron ipakita kung giunsa kini nga pamaagi molihok, gipatuman nako ang pamaagi sa lunsay nga C ug gihimo ang daghang mga pag-optimize pareho sa mga termino sa katulin sa pagpatuman ug memorya (dili nimo mahanduraw kung unsa ang gibug-aton sa kini nga mga litrato nga walaβy compression, bisan sa wala pa ang DCT). Ang cross-platform nga nakab-ot gamit ang kombinasyon sa mga librarya
Ang pagpatuman magamit sa porma sa usa ka console utility ug librarya. Kadtong interesado makakat-on og dugang mahitungod sa paggamit sa naulahi sa readme sa repository sa Github, ang link nga akong i-attach sa katapusan sa post.
Unsaon paggamit?
Pag-amping. Ang mga imahe nga gigamit alang sa pagputos gipili pinaagi sa pagpangita gamit ang usa ka regular nga ekspresyon sa gihatag nga direktoryo sa ugat. Pagkahuman, ang mga file mahimong ibalhin, ilisan ug kopyahon sa gusto sa sulod sa mga utlanan niini, usba ang file ug operating system, ug uban pa. Bisan pa, kinahanglan ka mag-amping pag-ayo ug dili usbon ang diha-diha nga sulud sa bisan unsang paagi. Ang pagkawala sa bili sa bisan usa ka gamay makahimo nga imposible sa pagbawi sa impormasyon.
Pagkahuman, ang utility nagbilin usa ka espesyal nga file sa archive nga adunay tanan nga kasayuran nga gikinahanglan alang sa pag-unpack, lakip ang datos bahin sa mga imahe nga gigamit. Sa iyang kaugalingon, kini motimbang ug mga usa ka pares nga kilobytes ug walay bisan unsang mahinungdanong epekto sa giokupar nga disk space.
Mahimo nimong analisahon ang posible nga kapasidad gamit ang '-a' flag: './f5ar -a [search folder] [Perl-compatible nga regular nga ekspresyon]'. Ang pag-pack gihimo gamit ang command './f5ar -p [search folder] [Perl-compatible regular expression] [packed file] [archive name]', ug pag-unpack gamit ang './f5ar -u [archive file] [recovered file name] ]' .
Pagpakita sa trabaho
Aron ipakita ang pagka-epektibo sa pamaagi, nag-upload ako usa ka koleksyon sa 225 nga hingpit nga libre nga mga litrato sa mga iro gikan sa serbisyo.
Ang pagkasunod-sunod yano ra:
$ 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/
Mga screenshot para sa mga fans
Ang wala maputos nga file mahimo ug kinahanglan gihapon nga basahon:
Sama sa imong nakita, gikan sa orihinal nga 633 + 36 == 669 megabytes nga datos sa hard drive, nakaabut kami sa labi ka makapahimuot nga 551. Ang ingon nga usa ka radikal nga kalainan gipatin-aw sa pagkunhod sa mga kantidad sa mga coefficients, nga nakaapekto sa ilang sunod-sunod nga lossless compression: ang pagkunhod sa usa sa usa lang dali nga " makaputol sa usa ka pares nga bytes gikan sa katapusan nga file. Bisan pa, kini usa pa ka pagkawala sa datos, bisan kung gamay ra kaayo, nga kinahanglan nimo nga antuson.
Maayo na lang, sila hingpit nga dili makita sa mata. Ubos sa spoiler (tungod kay ang habrastorage dili makadumala sa dagkong mga file), ang magbabasa makahimo sa pagtimbang-timbang sa kalainan sa mata ug sa ilang intensity, nga nakuha pinaagi sa pagkunhod sa mga bili sa nausab nga sangkap gikan sa orihinal:
Kay sa usa ka konklusyon
Sa pagkonsiderar sa tanan niini nga mga kalisud, ang pagpalit sa usa ka hard drive o pag-upload sa tanan sa panganod ingon og usa ka labi ka yano nga solusyon sa problema. Apan bisan kung nagpuyo kami sa ingon ka nindot nga panahon karon, walaβy garantiya nga ugma posible pa nga mag-online ug ma-upload ang tanan nimong dugang nga datos sa usa ka lugar. O adto sa tindahan ug pagpalit sa imong kaugalingon og laing libo ka terabyte nga hard drive. Apan mahimo nimo kanunay nga gamiton ang kasamtangan nga mga balay.
->
Source: www.habr.com