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