@ProLua

Страница 149 из 307
fgntfg
04.09.2017
11:06:02
для большой рандомности можно пихать длину данных в хеш, по которому проверяется целосность данных. И считать хеш на лету, пока собираешь данные.

единственное что может пофачить - коллизии хешей

Snusmumriken
04.09.2017
11:06:51
рандомные данные [[[данные|||сигнатура|||длинна]]] рандомные данные
Можно и так, пожалуй. Ну, я пришёл к оптимальному по мне: [нз данные заголовока кз]данные

fgntfg
04.09.2017
11:07:32
обычно указывают длину загаловка, а не ставят маркеры конца загаловка

Google
Snusmumriken
04.09.2017
11:07:51
Можно указывать длину, но тогда появляется лимит имени : ) А если я хочу имя на 100мб ))))

fgntfg
04.09.2017
11:08:10
не появится, если указать длину имени

ну или хотябы порядок длины

типа 32 байта

Snusmumriken
04.09.2017
11:08:53
Тогда уж ещё длину длины имени, чтобы в 32 байта влезло : )

fgntfg
04.09.2017
11:09:21
ну если хочется борщить, то почему бы и нет.

и всё просолить хорошенечко

Snusmumriken
04.09.2017
11:10:43
Я руководствовался комфортом. Минимум отдельных процедур: 1. выдираем предполагаемые заголовки 2. сплитим то что получили на отдельные строки, не сплитится - или что-то неправильно - удаляем 3. парсим то что получилось в ООП-стайл. Можно оптимальнее: 1. Выдираем заголовок и парсим его в ООП-стайл 2. Смещаемся на длину файла из заголовка 3. Ищем следующий заголовок Так проще всего, на мой взгляд.

fgntfg
04.09.2017
11:11:40
А можно еще и заголовки отдельно от данных хранить

Snusmumriken
04.09.2017
11:11:59
Вот я думал на эту тему, но тогда не получится записывать в архив новые данные.

fgntfg
04.09.2017
11:12:14
или даже хранить словарик с адресами начал ахивных данных

но всё это пустое

Snusmumriken
04.09.2017
11:13:27
Можно-можно, но тогда сформировал архив - и всё тут, ничего не допишешь. В моём варианте канают изменения файлов (ценой увеличения архива на их размер, избыточность но на крошечных файлах - канает, плюс типа история версий ))) и добавление новых.

Google
fgntfg
04.09.2017
11:14:02
у игры Смешбандикут были забавные приключение с умести игру на диск

почитай, там - космос

Snusmumriken
04.09.2017
11:14:16
Хех, линк есть? : )

fgntfg
04.09.2017
11:14:18
или видос на тытрубе глянь

Saphire
04.09.2017
11:14:21
Можно и так, пожалуй. Ну, я пришёл к оптимальному по мне: [нз данные заголовока кз]данные
Погоди, в одном "контейнере" может быть несколько упакованных данных?

fgntfg
04.09.2017
11:14:24
блин, я поищу

Snusmumriken
04.09.2017
11:14:57
Погоди, в одном "контейнере" может быть несколько упакованных данных?
В одном "архиве" может быть куча файлов, у каждого файла - свой заголовок.

Saphire
04.09.2017
11:16:19
Тогда твой формат. Ну, он много может отбросить файлов, если тебе попадется джекпот в виде тех возможных имён

И вообще в топку имена в таком, на самом деле. Это должно быть уже в своих данных

Snusmumriken
04.09.2017
11:17:50
Тогда твой формат. Ну, он много может отбросить файлов, если тебе попадется джекпот в виде тех возможных имён
Значит сделаем имена невозможными. Сигнатура начала-конца может содержать непечатаемые символы. Любая здравая ОС не даёт делать файлы с bell-символами, иначе каждый раз когда ты бы открывал папку с этим файлом - твой комп бибикал бы )))

Saphire
04.09.2017
11:19:23
Просто в моём случае, найти некорректный файл можно только если ты попадешь на два одинаковых псевдозаголовка на определенном друг от друга расстоянии.

Но потерь файлов от неправильного имени просто не будет как факта

fgntfg
04.09.2017
11:20:15
http://all-things-andy-gavin.com/2011/02/02/making-crash-bandicoot-part-1/

annelin
04.09.2017
11:20:32
снус, лучше скажи для дэбила, как передать по удп сокету данных больше чем мту?

тупым разделением не получается

Saphire
04.09.2017
11:21:19
Я конечно это усложняю может быть, но лучше иметь в этом случае два формата - один позволяет тебе найти "свои" данные, а второй в этих данных уже говорит, что это ты вообще выловил

Snusmumriken
04.09.2017
11:22:09
Но потерь файлов от неправильного имени просто не будет как факта
Три раза блин сказал, как это исправляется )))

Snusmumriken
04.09.2017
11:25:24
снус, лучше скажи для дэбила, как передать по удп сокету данных больше чем мту?
Там не совсем MTU, там 8кб (типа, умные сетевые карты умеют в передачу UDP больше чем MTU, но ничего не гарантируют, если повреждение хоть в одном пакете MTU - сообщение утеряно полностью), но для этого тебе нужен протокол передачи поверх UDP, который позволяет . 1. Не использовать UDP 2. Написать свой протокол поверх UDP, который сделает всё заебись. Я так и сделал.

Google
Snusmumriken
04.09.2017
11:26:30
Эмм... Какая такая система парсит файлы на белл-символы при открытии?
Ты не можешь создать файл, с именем содержащим почти любой символ из таблицы до 37.



Saphire
04.09.2017
11:27:16
Ты не можешь создать файл, с именем содержащим почти любой символ из таблицы до 37.
На какой системе? Это всё зависит от Файловой Системы полностью

Snusmumriken
04.09.2017
11:27:51
Боюсь что ни на какой распространённой ))) FAT/NTFS/EXT1-2-3. Только человеческие, печатные символы.

Во, слушай, как файловая система различает, что на ЖД - файл, а что - нет? : ) ЖД - это же просто огромный плоский набор битиков.

Snusmumriken
04.09.2017
11:30:15
Ты имеешь ввиду, кластеры? Маловато будет. Плюс кроме кластеров там ещё что-то должно быть. Да и кластеры имеют сложную структуру, мда. Блин, мы все живём в мире, созданном гениальными людьми. Кошмар.

Saphire
04.09.2017
11:31:06
Есть таблица разметки жёсткого диска. Потом в самом начале этого раздела идёт некий корневой блок Файловой Системы, определенного размера. Всё данные упакованы в другие блоки такогоже размера, разбитые по этим блоки если надо

Snusmumriken
04.09.2017
11:31:22
Это только у FAT : )

Saphire
04.09.2017
11:31:40
Остальные работают на том же принципе

Snusmumriken
04.09.2017
11:32:54
Ну, не всегда. Ладно, хрен с ним. В общем, я считаю что у моей фиговины нет явно выраженных недостатков. Даже если внутри какого-то файла найдётся другой архив - он может быть скипнут по длине тела файла внешнего архива. Проверка при создании нового файла, мол, имя содержит байты заголовка - тоже поможет.

Saphire
04.09.2017
11:33:32
Если ты мне покажешь хоть одну файловую систему не основанную на блоках, за исключением tar и фиксированных файлах систем, я тебе дам медальку воздушную

Snusmumriken
04.09.2017
11:33:43
Воу

Я запилю свою файловую систему, без блекджека и блоков )))

Philipp
04.09.2017
11:48:04
Есть что-то интересное, что стоит почитать?

Saphire
04.09.2017
11:57:14
Snusmumriken
04.09.2017
11:57:46
На деревьях и безудержной фрагментации. Но зато без блоков )))

Saphire
04.09.2017
11:58:19
А теперь подумай.. вот было у тебя три файла. Средний удалили. А теперь пытаются записать новый, больше среднего.

Google
Snusmumriken
04.09.2017
11:58:37
Я уже написал.

Saphire
04.09.2017
11:59:10
На деревьях и безудержной фрагментации. Но зато без блоков )))
Поздравляю, ты изобрел те же самые блоки, но в гораздо более неудобном формате

Snusmumriken
04.09.2017
12:00:19
Ну не, не блоки : ) Сами файлы - занимают единое неделимое пространство, тут нет блоков : ) Ой, как вариант - я уже сделал без блоков. Заголовок + тело : ) Если что-то удалили - заголовок с телом затираются в ноль.

Кстати да, фрагменты - пустого пространства, имеются ввиду.

Saphire
04.09.2017
12:01:10
А как ты поймёшь, где и сколько у тебя пустого пространства?

И что это не просто внутри файла?

Snusmumriken
04.09.2017
12:01:51
Индексация невозможна, для того чтобы прочитать содержимое диска - нужно хранить все файлы в харде. Сколько пустого пространства? При считывании - найти пустые участки, это не сложно : )

Saphire
04.09.2017
12:02:23
И ты итеративно будешь бегать по диску и считать?

Snusmumriken
04.09.2017
12:02:25
Если нашли заголовок - с прошлого заголовка + длины того тела до текущего заголовка - пустое пространство.

Конечно : ) Но зато смотри, уже есть гордое название "файловая система", и она без блоков ))

Admin
ERROR: S client not available

Saphire
04.09.2017
12:02:57
... это самая хреновая файловая система в мире

Snusmumriken
04.09.2017
12:03:21
Нигде не сказано что она должна быть хорошей, достаточно "без блоков", и самой возможности хранения файлов. Какое ТЗ - такой и проект )) И да, это ещё далеко не худших вариант : )

Saphire
04.09.2017
12:04:42
Куда хуже то?

Snusmumriken
04.09.2017
12:05:16
Хмм. Например, когда мы дописываем только в конец "диска", не используя пустое пространство. Диск приходится часто форматировать, хотя как память для прошивки микрухи - пойдёт. Ты веришь что может быть ещё хуже? Я могу продолжить ухудшать : )

Snusmumriken
04.09.2017
12:08:17
Тар - не файловая система, насколько я знаю, просто способ упаковки файлов в другой файл. Или ещё и ФС?

Saphire
04.09.2017
12:08:17
В тар же есть блоки :3
...лолчто? Блоки там такие же, как у персонажа выше. Заголовок с длинной и данные. И так для каждого файла

tar - Tape ARchive

Google
Saphire
04.09.2017
12:09:06
Это чисто линейный формат хранения файлов

Snusmumriken
04.09.2017
12:10:57


Saphire
04.09.2017
12:11:08
Ты изобрел TAR?

Мерлин
04.09.2017
12:12:37
...лолчто? Блоки там такие же, как у персонажа выше. Заголовок с длинной и данные. И так для каждого файла
А, ну в этом смысле да Но вообще я помню как приходилось разбивать файлы на чанки, в конце чанка - смещение до следующего куска Тогда можно было прочесть заголовки многих файлов без скана всей ленты

Snusmumriken
04.09.2017
12:13:14
Ты изобрел TAR?
Угу ))) Я даже не читал доки по нему.

Snusmumriken
04.09.2017
12:14:29
Итак, давайте дружно петь песню: "Снус изобрёл велосипед Никто его не просил, а он всё равно изобрёл. И им никто никогда не будет пользоваться кроме снуса (и то не факт) Вот такой классный велосипел" )))

Но на самом деле мне правда интересно как оно работало, я размял моск над весёлой задачкой, и заюзаю её при упаковке ресурсов, чтобы ебошить рарджпеги/зип"тар"ы.

Мерлин
04.09.2017
12:17:48
Вообще с появлением реализаций fat32 для микроконтроллеров это всё неактуально, имхо

Snusmumriken
04.09.2017
12:18:34
Есть такое. Но там задача в другом: Если ты мне покажешь хоть одну файловую систему не основанную на блоках, за исключением tar и фиксированных файлах систем, я тебе дам медальку воздушную

Snusmumriken
04.09.2017
12:19:05
Заебошишь блочный архив, где есть столько же фич? Правда, не нужно, ибо в файлах нельзя делать дырки, только заранее размечать больше чем нужно, как делают торренты, и то, это лоулевел извращения.

Saphire
04.09.2017
12:20:27
Есть такое. Но там задача в другом: Если ты мне покажешь хоть одну файловую систему не основанную на блоках, за исключением tar и фиксированных файлах систем, я тебе дам медальку воздушную
Только вот.. там условие - не тар :Р только вот учитывая это, в принципе ничего другого не получится придумать. TAR это практически концепция, кроме формата

Snusmumriken
04.09.2017
12:20:57
Я расписал методику работы с дырками, уже не тар :P

Saphire
04.09.2017
12:21:47
Интересно, как тар работает с перезаписью и удалением файла в архиве?

Либо помечает копию внутри себя недействительной (и спинки новую, если перезапись)... Либо также делает дырки

Snusmumriken
04.09.2017
12:23:07
В файлах нельзя создавать дырки. Варианта два: 1. Дописать в конец: "Такой-то файл удалён", чтобы читалка файла удалила объект из структуры внутри себя 2. Перезаписать всё нафиг, но уже без файла То же самое - с редактированием. Редактирование в принципе возможно только в одном случае: мы дописываем в конец последнего добавленного файла Мой "формат тара" это тянет. Хм.

Мерлин
04.09.2017
12:24:02
Там вообще нельзя удалить файл без костылей

А, в новых версиях есть

В новых версиях tar архиватора

Страница 149 из 307