Saphire
Просто в моём случае, найти некорректный файл можно только если ты попадешь на два одинаковых псевдозаголовка на определенном друг от друга расстоянии.
Saphire
Но потерь файлов от неправильного имени просто не будет как факта
fgntfg
http://all-things-andy-gavin.com/2011/02/02/making-crash-bandicoot-part-1/
Anonymous
снус, лучше скажи для дэбила, как передать по удп сокету данных больше чем мту?
Anonymous
тупым разделением не получается
Saphire
Я конечно это усложняю может быть, но лучше иметь в этом случае два формата - один позволяет тебе найти "свои" данные, а второй в этих данных уже говорит, что это ты вообще выловил
Snusmumriken
Saphire
Saphire
Бред какой-то сказал.
Snusmumriken
снус, лучше скажи для дэбила, как передать по удп сокету данных больше чем мту?
Там не совсем MTU, там 8кб (типа, умные сетевые карты умеют в передачу UDP больше чем MTU, но ничего не гарантируют, если повреждение хоть в одном пакете MTU - сообщение утеряно полностью), но для этого тебе нужен протокол передачи поверх UDP, который позволяет .
1. Не использовать UDP
2. Написать свой протокол поверх UDP, который сделает всё заебись. Я так и сделал.
Saphire
Snusmumriken
Saphire
Snusmumriken
Боюсь что ни на какой распространённой )))
FAT/NTFS/EXT1-2-3.
Только человеческие, печатные символы.
Snusmumriken
Во, слушай, как файловая система различает, что на ЖД - файл, а что - нет? : )
ЖД - это же просто огромный плоский набор битиков.
Saphire
Snusmumriken
Ты имеешь ввиду, кластеры? Маловато будет. Плюс кроме кластеров там ещё что-то должно быть. Да и кластеры имеют сложную структуру, мда.
Блин, мы все живём в мире, созданном гениальными людьми. Кошмар.
Saphire
Есть таблица разметки жёсткого диска. Потом в самом начале этого раздела идёт некий корневой блок Файловой Системы, определенного размера. Всё данные упакованы в другие блоки такогоже размера, разбитые по этим блоки если надо
Snusmumriken
Это только у FAT : )
Saphire
Остальные работают на том же принципе
Snusmumriken
Ну, не всегда. Ладно, хрен с ним.
В общем, я считаю что у моей фиговины нет явно выраженных недостатков.
Даже если внутри какого-то файла найдётся другой архив - он может быть скипнут по длине тела файла внешнего архива.
Проверка при создании нового файла, мол, имя содержит байты заголовка - тоже поможет.
Saphire
Если ты мне покажешь хоть одну файловую систему не основанную на блоках, за исключением tar и фиксированных файлах систем, я тебе дам медальку воздушную
Snusmumriken
Воу
Snusmumriken
Я запилю свою файловую систему, без блекджека и блоков )))
Snusmumriken
Saphire
Snusmumriken
На деревьях и безудержной фрагментации. Но зато без блоков )))
Saphire
А теперь подумай.. вот было у тебя три файла. Средний удалили. А теперь пытаются записать новый, больше среднего.
Snusmumriken
Я уже написал.
Snusmumriken
Ну не, не блоки : )
Сами файлы - занимают единое неделимое пространство, тут нет блоков : )
Ой, как вариант - я уже сделал без блоков.
Заголовок + тело : )
Если что-то удалили - заголовок с телом затираются в ноль.
Snusmumriken
Кстати да, фрагменты - пустого пространства, имеются ввиду.
Saphire
А как ты поймёшь, где и сколько у тебя пустого пространства?
Saphire
И что это не просто внутри файла?
Snusmumriken
Индексация невозможна, для того чтобы прочитать содержимое диска - нужно хранить все файлы в харде.
Сколько пустого пространства? При считывании - найти пустые участки, это не сложно : )
Saphire
И ты итеративно будешь бегать по диску и считать?
Snusmumriken
Если нашли заголовок - с прошлого заголовка + длины того тела до текущего заголовка - пустое пространство.
Snusmumriken
Конечно : )
Но зато смотри, уже есть гордое название "файловая система", и она без блоков ))
Saphire
... это самая хреновая файловая система в мире
Snusmumriken
Нигде не сказано что она должна быть хорошей, достаточно "без блоков", и самой возможности хранения файлов. Какое ТЗ - такой и проект ))
И да, это ещё далеко не худших вариант : )
Saphire
Куда хуже то?
Snusmumriken
Хмм. Например, когда мы дописываем только в конец "диска", не используя пустое пространство. Диск приходится часто форматировать, хотя как память для прошивки микрухи - пойдёт. Ты веришь что может быть ещё хуже? Я могу продолжить ухудшать : )
Saphire
Мерль
Snusmumriken
Тар - не файловая система, насколько я знаю, просто способ упаковки файлов в другой файл. Или ещё и ФС?
Saphire
В тар же есть блоки :3
...лолчто? Блоки там такие же, как у персонажа выше. Заголовок с длинной и данные. И так для каждого файла
Saphire
tar - Tape ARchive
Saphire
Это чисто линейный формат хранения файлов
Snusmumriken
Хм. Но тут - без сжатия и с простыми (человекочитаемыми) заголовками.
Saphire
Saphire
Saphire
Snusmumriken
Snusmumriken
Итак, давайте дружно петь песню:
"Снус изобрёл велосипед
Никто его не просил, а он всё равно изобрёл.
И им никто никогда не будет пользоваться кроме снуса (и то не факт)
Вот такой классный велосипел"
)))
Snusmumriken
Но на самом деле мне правда интересно как оно работало, я размял моск над весёлой задачкой, и заюзаю её при упаковке ресурсов, чтобы ебошить рарджпеги/зип"тар"ы.
Мерль
Вообще с появлением реализаций fat32 для микроконтроллеров это всё неактуально, имхо
Snusmumriken
Есть такое. Но там задача в другом:
Если ты мне покажешь хоть одну файловую систему не основанную на блоках, за исключением tar и фиксированных файлах систем, я тебе дам медальку воздушную
Saphire
Snusmumriken
Заебошишь блочный архив, где есть столько же фич?
Правда, не нужно, ибо в файлах нельзя делать дырки, только заранее размечать больше чем нужно, как делают торренты, и то, это лоулевел извращения.
Saphire
Snusmumriken
Я расписал методику работы с дырками, уже не тар :P
Saphire
Интересно, как тар работает с перезаписью и удалением файла в архиве?
Saphire
Либо помечает копию внутри себя недействительной (и спинки новую, если перезапись)... Либо также делает дырки
Snusmumriken
В файлах нельзя создавать дырки.
Варианта два:
1. Дописать в конец: "Такой-то файл удалён", чтобы читалка файла удалила объект из структуры внутри себя
2. Перезаписать всё нафиг, но уже без файла
То же самое - с редактированием.
Редактирование в принципе возможно только в одном случае: мы дописываем в конец последнего добавленного файла
Мой "формат тара" это тянет. Хм.
Мерль
Мерль
Там вообще нельзя удалить файл без костылей
Мерль
А, в новых версиях есть
Мерль
В новых версиях tar архиватора
Мерль
Но он просто перепаковывает архив
Мерль
И всё
Saphire
... Так скучно
Snusmumriken
> Редактирование без перезаписи в принципе возможно только в одном случае: мы дописываем в конец последнего добавленного файла
Saphire
Snusmumriken
Нельзя занулять. Это файл.
Нельзя менять то что уже написано, только дописывать в конец файла.
Saphire
..с каких пор файлы у нас append-only?
Snusmumriken
Ох, на стандартной сишке - вроде как всегда : )
Луа, в данном плане - идентична стандартной сишке. Там самый тупой адаптер из одного в другое.