Так, я нашел один из плохих файлов (хотя он не единственный). Ломаются обе версии xmlp_data2struct_old() и xmlp_data2struct(). На хороших файлах больше 100МБ вроде не отъедалось, а на этом жрется вся память.
Что-то не соображу, как лучше файл передать. (Он был в сборке «Русская классика» с диска, прилагаемого к устройству; его md5sum: 0f3730e48d5db8bd5163c2bb94f21906 Lohvitskaya_Oborotni.55375.fb2 .)
Да, я об интерфейсе самого устройства: если содержимое директории будет занимать несколько страниц, то нужно будет нажимать несколько раз кнопку PgDn, чтобы найти нужное, а он каждый раз перерисовывает экран и тормозит. А вот бродить вверх-вниз на одной странице — гораздо более быстрая операция. Глобальный вопрос в том, чтобы минимизировать полное время поиска нужного файла. Вроде бы очевидно, что для этого нужно иметь на каждом уровне примерно одинаковое число веток, и вопрос лишь в том, сколько именно: если больше, то надо листать страницы, если меньше — будет глубже дерево. Причем глубина растет логарифмически, поэтому, возможно, выгоднее сделать столько веток, чтобы умещалось на одной странице.
Про гитхаб: операция помещения туда почти ничего не стоит (если, разумеется, человек вообще владеет git'ом). А польза от «как описание и пример реализации идеи» уже стоит того.
2. Да, было бы круто. Только хорошо бы сразу сделать генерацию многоуровневого дерева, тогда вроде бы нужен единственный параметр — максимальное количество детей у каждой вершины. Должно быть равно количеству строк на экране; хотя я уже засомневался — может удобней лишний раз нажать PgDn, чем иметь лишний уровень?
Кстати, как насчет того, чтобы выложить, например, в гитхаб?
1. По правде сказать, я и помыслить себе не могу, чтобы возник баг из-за имени директории. С другой стороны я уже сталкивался с чем-то таким: закомитил в репозиторий файл aux.tcl, а потом коллеги не могли его выкачать из-за того, что в винде имя файла aux соответствует устройству.
2. С использованием cp1251 во внутренней кухне я вижу только одну проблему: некоторые алфавиты (арабский, иврит, может быть даже украинский) в нее не умещаются, поэтому либо сломается внутренний вызов конвертера, либо на выходе будут неадекватные символы.
3. Я примерно так и сделал — поковырялся в get_splitten_dirs(), чтобы убрать трехбукрвенные директории. Естественно, построение префиксного дерева требует более серьезного рефакторинга.
4. Попозже (в нерабочее время) я повторю процедуру, чтобы найти конкретно проблемные файлы (а то я их уже потер). Сейчас могу сказать, что проблемы возникли с той библиотекой, что была на устройстве (или на прилагаемом диске) при покупке. Возможно, я что-то переносил, но скорее всего изначально были директории library/{Зарубежная Классика, Русская Классика}, и в обеих были плохие файлы.
Объяснение, что это из-за регвыров — вполне логичное.
Про образ раздела сделаю.
Исходники были не последние, а, скорее всего, первые.
Что-то не соображу, как лучше файл передать. (Он был в сборке «Русская классика» с диска, прилагаемого к устройству; его md5sum: 0f3730e48d5db8bd5163c2bb94f21906 Lohvitskaya_Oborotni.55375.fb2 .)
Про гитхаб: операция помещения туда почти ничего не стоит (если, разумеется, человек вообще владеет git'ом). А польза от «как описание и пример реализации идеи» уже стоит того.
Кстати, как насчет того, чтобы выложить, например, в гитхаб?
2. С использованием cp1251 во внутренней кухне я вижу только одну проблему: некоторые алфавиты (арабский, иврит, может быть даже украинский) в нее не умещаются, поэтому либо сломается внутренний вызов конвертера, либо на выходе будут неадекватные символы.
3. Я примерно так и сделал — поковырялся в get_splitten_dirs(), чтобы убрать трехбукрвенные директории. Естественно, построение префиксного дерева требует более серьезного рефакторинга.
4. Попозже (в нерабочее время) я повторю процедуру, чтобы найти конкретно проблемные файлы (а то я их уже потер). Сейчас могу сказать, что проблемы возникли с той библиотекой, что была на устройстве (или на прилагаемом диске) при покупке. Возможно, я что-то переносил, но скорее всего изначально были директории library/{Зарубежная Классика, Русская Классика}, и в обеих были плохие файлы.
Объяснение, что это из-за регвыров — вполне логичное.
Про образ раздела сделаю.
Исходники были не последние, а, скорее всего, первые.
PS. Нет, я не слоупок. Просто был readonly и не мог оставлять нормальные комментарии.