Дар бораи як усули аҷиб барои сарфаи фазои диски сахт

Корбари дигар мехоҳад ба диски сахт пораи нави маълумот нависад, аммо барои ин кор фазои кофӣ надорад. Ман инчунин намехоҳам чизеро нест кунам, зеро "ҳама чиз хеле муҳим ва зарур аст." Ва мо бояд бо он чӣ кор кунем?

Ҳеҷ кас ин мушкилот надорад. Дар дискҳои сахти мо терабайтҳо маълумот мавҷуд аст ва ин миқдор майли камшавӣ надорад. Аммо он то чӣ андоза беназир аст? Дар ниҳоят, ҳама файлҳо танҳо маҷмӯи битҳои дарозии муайян мебошанд ва эҳтимолан, файли нав аз файле, ки аллакай захира шудааст, фарқ надорад.

Маълум аст, ки ҷустуҷӯи қисмҳои иттилооте, ки аллакай дар диски сахт нигоҳ дошта мешаванд, агар нокомӣ набошад, ҳадди аққал вазифаи муассир нест. Аз тарафи дигар, агар фарқият кам бошад, шумо метавонед онро каме танзим кунед ...

Дар бораи як усули аҷиб барои сарфаи фазои диски сахт

TL;DR - кӯшиши дуюм барои сӯҳбат дар бораи усули аҷиби оптимизатсияи додаҳо бо истифода аз файлҳои JPEG, ҳоло дар шакли фаҳмотар.

Дар бораи битҳо ва фарқият

Агар шумо ду қисмати комилан тасодуфии маълумотро гиред, пас ба ҳисоби миёна нисфи битҳои дар онҳо мавҷудбуда мувофиқат мекунанд. Воқеан, дар байни тарҳҳои имконпазир барои ҳар як ҷуфт ('00, 01, 10, 11'), маҳз нисфи онҳо арзишҳои якхела доранд, дар ин ҷо ҳама чиз оддӣ аст.

Аммо, албатта, агар мо танҳо ду файл гирем ва якеро ба дуюм мувофиқат кунем, пас яке аз онҳоро аз даст медиҳем. Агар мо тағиротро захира кунем, мо танҳо аз нав ихтироъ мекунем рамзгузории дельта, ки бе мо комилан хуб вуҷуд дорад, гарчанде ки он одатан барои як ҳадаф истифода намешавад. Мо метавонем кӯшиш кунем, ки пайдарпаии хурдтарро ба як калонтар ҷойгир кунем, аммо бо вуҷуди ин, агар мо онро бо ҳама чиз беэҳтиётона истифода барем, мо хатари аз даст додани сегментҳои муҳими маълумотро дорем.

Пас, байни чӣ ва чӣ фарқиятро бартараф кардан мумкин аст? Хуб, яъне файли наве, ки аз ҷониби корбар навишта шудааст, танҳо як пайдарпайи битҳост, ки мо бо онҳо худ аз худ коре карда наметавонем. Пас шумо танҳо лозим аст, ки дар диски сахт чунин битҳоро пайдо кунед, ки онҳоро бидуни нигоҳ доштани фарқият иваз кардан мумкин аст, то шумо метавонед аз талафоти онҳо бе оқибатҳои ҷиддӣ наҷот ёбед. Ва тағир додани на танҳо файли худи FS, балки баъзе маълумоти камтар ҳассос дар дохили он маъно дорад. Аммо кадомаш ва чӣ тавр?

Усулҳои насб

Файлҳои фишурдашудаи гумшуда ба наҷот меоянд. Ҳамаи ин jpegs, mp3s ва ғайра, гарчанде фишурдашавии гумшуда, дорои як қатор битҳо мебошад, ки онҳоро бехатар иваз кардан мумкин аст. Усулҳои пешрафтаро истифода бурдан мумкин аст, ки ҷузъҳои онҳоро дар марҳилаҳои гуногуни рамзгузорӣ ба таври чашмрас тағир медиҳанд. Интизор шавед. Техникаи пешқадам... дигаргунсозии нонамоён... як каме ба дигараш... ин тақрибан монанд аст стеганография!

Воқеан, ворид кардани як маълумот ба маълумоти дигар усулҳои ӯро ба хотир меорад, мисли ҳеҷ чизи дигар. Ман инчунин аз чашмнорас будани дигаргунихое, ки дар хиссиёти инсон ба амал омадаанд, ба вачд омадаам. Дар он ҷое, ки роҳҳо аз ҳам ҷудо мешаванд, махфӣ аст: вазифаи мо аз он иборат аст, ки корбар маълумоти иловагиро ба диски сахти худ ворид кунад; ин танҳо ба ӯ зарар мерасонад. Ӯ боз фаромӯш хоҳад кард.

Бинобар ин, гарчанде ки мо метавонем онҳоро истифода барем, мо бояд баъзе тағйирот ворид кунем. Ва он гоҳ ман бо истифода аз мисоли яке аз усулҳои мавҷуда ва формати маъмулии файл ба онҳо мегӯям ва нишон медиҳам.

Дар бораи шаголхо

Агар шумо онро дар ҳақиқат фишурда кунед, он чизи аз ҳама фишурдашаванда дар ҷаҳон аст. Мо, албатта, дар бораи файлҳои JPEG гап мезанем. На танҳо даҳҳо асбобҳо ва усулҳои мавҷуда барои ворид кардани маълумот ба он мавҷуданд, балки он маъмултарин формати графикӣ дар ин сайёра мебошад.

Дар бораи як усули аҷиб барои сарфаи фазои диски сахт

Аммо, барои он ки ба сагпарварӣ машғул нашавед, шумо бояд соҳаи фаъолияти худро дар файлҳои ин формат маҳдуд кунед. Ҳеҷ кас квадратҳои монохромиро, ки бо сабаби фишурдани аз ҳад зиёд пайдо мешаванд, дӯст намедорад, бинобар ин шумо бояд худро бо кор бо файли фишурдашуда маҳдуд кунед, пешгирӣ кардани рамзгузорӣ. Аниқтараш, бо коэффисиентҳои бутун, ки пас аз амалиётҳо барои талафоти додаҳо масъуланд - DCT ва квантизатсия, ки дар схемаи рамзгузорӣ ба таври комил нишон дода шудаанд (ба шарофати вики Китобхонаи Миллии Бауман):
Дар бораи як усули аҷиб барои сарфаи фазои диски сахт

Усулҳои зиёде барои оптимизатсияи файлҳои jpeg вуҷуд доранд. Оптимизатсияи бе талаф вуҷуд дорад (jpegtran), оптимизатсия вуҷуд дорад "талафот нест", ки дар асл чизи дигареро саҳм мегузоранд, аммо мо ба онҳо парвое надорем. Дар ниҳоят, агар корбар омода бошад, ки як маълумотро ба дигараш ворид кунад, то фазои озоди дискро афзоиш диҳад, пас ӯ ё тасвирҳои худро кайҳо оптимизатсия кардааст ё аз тарси гум шудани сифат ин корро кардан намехоҳад.

F5

Тамоми оилаи алгоритмҳо ба ин шартҳо мувофиқат мекунанд, ки шумо метавонед бо онҳо шинос шавед дар ин муаррифии хуб. Мукаммалтарини онҳо алгоритм аст F5 аз ҷониби Андреас Вестфелд, кор бо коэффисиентҳои ҷузъи равшанӣ, зеро чашми инсон ба тағйироти он камтар ҳассос аст. Гузашта аз ин, он як техникаи ҷобаҷокуниро дар асоси рамзгузории матритса истифода мебарад, ки имкон медиҳад, ки ҳангоми ворид кардани як миқдори иттилоот камтар тағирот ворид карда шавад, андозаи контейнери истифодашуда ҳамон қадар калонтар бошад.

Худи тағиротҳо то як кам кардани арзиши мутлақи коэффитсиентҳо дар шароити муайян (яъне на ҳамеша), ки ба шумо имкон медиҳад F5-ро барои оптимизатсияи нигоҳдории маълумот дар диски сахт истифода баред. Гап дар он аст, ки коэффисиент пас аз чунин тағирот эҳтимолан пас аз рамзгузории Ҳуффман аз ҳисоби тақсимоти омории арзишҳо дар JPEG битҳои камтарро ишғол мекунад ва сифрҳои нав ҳангоми рамзгузории онҳо бо истифода аз RLE фоида хоҳанд дод.

Тағйироти зарурӣ барои аз байн бурдани қисме, ки барои махфият масъул аст (таҷдиди парол), ки захираҳо ва вақти иҷроро сарфа мекунад ва механизми кор бо бисёр файлҳо ба ҷои як дар як вақт илова карда мешавад. Хонанда гумон аст, ки ба раванди тағирот ба таври муфассал таваҷҷӯҳ зоҳир кунад, аз ин рӯ биёед ба тавсифи татбиқ гузарем.

Фанновариҳои баланд

Барои нишон додани он, ки ин равиш чӣ гуна кор мекунад, ман ин усулро дар C соф татбиқ кардам ва ҳам аз ҷиҳати суръати иҷро ва ҳам хотира як қатор оптимизатсияҳоро анҷом додам (шумо тасаввур карда наметавонед, ки ин тасвирҳо ҳатто пеш аз DCT бидуни фишурда чӣ қадар вазн доранд). Кросс-платформа бо истифода аз маҷмӯи китобхонаҳо ба даст омад libjpeg, pcre и ночиз, ки барои ин мо ба онҳо миннатдорем. Ҳамаи ин аз ҷониби "сохта" ҷамъ оварда мешавад, аз ин рӯ корбарони Windows мехоҳанд, ки барои баҳодиҳӣ баъзе Cygwin-ро барои худ насб кунанд ё бо Visual Studio ва китобхонаҳо мустақилона кор кунанд.

Татбиқ дар шакли утилитаи консолӣ ва китобхона дастрас аст. Шахсони манфиатдор метавонанд дар бораи истифодаи охирин дар readme дар анбори Github маълумоти бештар гиранд, истиноди онро ман дар охири интишор замима мекунам.

Чӣ тавр истифода бурдани?

Бодиққат. Тасвирҳое, ки барои бастабандӣ истифода мешаванд, тавассути ҷустуҷӯ бо истифода аз ифодаи муқаррарӣ дар директорияи решаи додашуда интихоб карда мешаванд. Пас аз ба итмом расидани он, файлҳоро метавон бо хоҳиши худ дар ҳудуди он интиқол дод, номгузорӣ ва нусхабардорӣ кард, файл ва системаҳои амалиётиро тағир дод ва ғайра. Аммо, шумо бояд хеле эҳтиёт бошед ва мундариҷаи фаврӣ ба ҳеҷ ваҷҳ тағир надиҳед. Аз даст додани арзиши ҳатто як бит метавонад барқарорсозии иттилоотро ғайриимкон гардонад.

Пас аз ба итмом расидан, утилита файли махсуси бойгониро мегузорад, ки дорои тамоми маълумоти барои кушодан зарурӣ, аз ҷумла маълумот дар бораи тасвирҳои истифодашуда мебошад. Худ аз худ, он тақрибан якчанд килобайт вазн дорад ва ба фазои ишғолшудаи диск ягон таъсири назаррас намерасонад.

Шумо метавонед қобилияти имконпазирро бо истифода аз парчами '-a' таҳлил кунед: './f5ar -a [папкаи ҷустуҷӯ] [Ифодаи муқаррарии бо Perl мувофиқ]'. Бастабандӣ бо фармони './f5ar -p [папкаи ҷустуҷӯ] [Ифодаи муқаррарии ба Perl мувофиқ] [файл басташуда] [номи бойгонӣ]' ва кушодан бо './f5ar -u [файли бойгонӣ] [номи файли барқароршуда анҷом дода мешавад. ]' .

Намоиши кор

Барои нишон додани самаранокии усул, ман маҷмӯи 225 аксҳои комилан ройгони сагҳоро аз хидмат бор кардам Нишондиҳанда ва дар хуччатхо як pdf-и калони 45 метри чилди дуюмро ёфтанд Санъати барномасозӣ Кнута.

Тартиб хеле содда аст:

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

Скриншотҳо барои мухлисон

Дар бораи як усули аҷиб барои сарфаи фазои диски сахт

Файли кушодашуда метавонад ва ҳоло ҳам хонда шавад:

Дар бораи як усули аҷиб барои сарфаи фазои диски сахт

Тавре ки шумо мебинед, аз аслии 633 + 36 == 669 мегабайт маълумот дар диски сахт, мо ба 551 гуворотар омадем. Чунин фарқияти куллӣ бо кам шудани қиматҳои коэффицентҳо шарҳ дода мешавад, ки ба онҳо таъсир мерасонад. фишурдасозии минбаъдаи бе талафот: кам кардани як ба як метавонад ба осонӣ " якчанд байтро аз файли ниҳоӣ бурида. Бо вуҷуди ин, ин як талафоти маълумот аст, гарчанде ки хеле хурд аст, ки шумо бояд бо он таҳаммул кунед.

Хушбахтона, онҳо ба чашм комилан ноаёнанд. Дар зери спойлер (азбаски habrastorage файлҳои калонро коркард карда наметавонад), хонанда метавонад фарқиятро ҳам аз рӯи чашм ва ҳам шиддатнокии онҳоро, ки тавассути тарҳ кардани арзишҳои ҷузъи тағирёфта аз асл ба даст омадааст, арзёбӣ кунад: аслӣ, бо маълумот дар дохили, фаркият (ранг хар кадар кундтар бошад, фарки блок хамон кадар кам мешавад).

Ба ҷои хулоса

Бо дарназардошти ҳамаи ин мушкилот, харидани диски сахт ё бор кардани ҳама чиз ба абр метавонад як роҳи осонтари ҳалли мушкилот ба назар расад. Аммо гарчанде ки мо ҳоло дар чунин замони аҷиб зиндагӣ дорем, ҳеҷ кафолате нест, ки фардо ба ҳар ҳол имкони ворид шудан ба интернет ва бор кардани ҳама маълумоти иловагии худро дар ҷое хоҳад дошт. Ё ба мағоза равед ва ба худ як диски сахти дигар ҳазор терабайт харед. Аммо шумо ҳамеша метавонед аз хонаҳои мавҷуда истифода баред.

-> GitHub

Манбаъ: will.com

Илова Эзоҳ