Элементарная задачка - XML, добавление
А что именно ты собираешься искать?
Я? Ничего. Это ты что-то искать должен. Ты же что-то куда-то вставляешь. А куда именно вставляешь - не знаешь.
Значит что? Значит ты должен найти место куда вставлять. Для поиска этого места в 10-и гиговом XML файле тебе в худшем случае (если это место будет в конце файла) придётся прочитать весь файл.
А теперь начинай юлить "я имела в виду не это, я не это имела в виду".
А куда именно вставляешь - не знаешь.
-----
Кто тебе это сказал?
Я назвал время - 0.3мс/вставка - по результату фактического тестирования - оно тебе хоть что-нибудь говорит?
Если поможет - оно не будет сильно менятся с ростом размера файла... какие-нибудь 0.02 мс... система больше задержать может...
придётся прочитать весь файл
-----
Зачем?
Уже сейчас ясно, что успеть поднять 10 гиг с диска за отводимое время не получится - ни документом, ни сахом, ни риадом - канал чтения 6 гб/с мах...
Начинай говорить, что надо решить задачу по второму варианту - т.е, найти ДокументЭлемент, потом позиционироваться примерно в конец и искать начало закрывающего тега... И сразу - второй вариант тоже идет в помойку, хотя и может уложится по времени в 20 мс...
Правильный ответ был бы
-----
Не был бы, а уже дан - пофиг дважды.
Фат берется по единственной причине - избавится от контроля прав доступа.
Я знаю, что под виндой есть возможность заблокировать этот контроль для определенных файлов под НТФС, но, увы, не умею этого делать.
А ограничения на размер могут быть любыми - как ты и говорил - будет ограничение в мегабайт - напишем 10К инклюдов...
П.С. "Сними погоны - стань обезьяном" (с) Мурр, сегодня.
придётся прочитать весь файл
-----
Зачем?
Уже сейчас ясно, что успеть поднять 10 гиг с диска за отводимое время не получится - ни документом, ни сахом, ни риадом - канал чтения 6 гб/с мах...
Что и подводит к мысли что задачу в том виде, как они сформулирована (вставка в произвольное место xml фала), решить невозможно. Отсюда вывод: очередной "муркин высер".
Учись формулировать задания.
Подсказка из зала: попробуй написать, а как именно ты хочешь задавать место вставки в XML? "Вставь <a>bbb</a> на 8-ю строчку"? Или "Вставь abc как значение элемента /document/chapter[@number=1]" или как?
На собесах подобные же задачки даёте?
-----
На собесе - нет - бессмысленно, ибо задача не на знание определенных вещей.
Мог бы и не спрашивать - тебе на нее дали 2 часа - на собесе столько времени на тебя тратить никто не будет.
А вот в качестве проверки навыков - да, вполне годится.
Ты, кстати, завалил два момента - общие инженерные навыки и умение работать с документацией.
Думаю, что дав пару тестов на сообразительность получу полную картинку.
И она сильно не в твою пользу будет.
Думай, работай над собой.
На собесах подобные же задачки даёте?
-----
На собесе - нет - бессмысленно, ибо задача не на знание определенных вещей.
Мог бы и не спрашивать - тебе на нее дали 2 часа - на собесе столько времени на тебя тратить никто не будет.
А вот в качестве проверки навыков - да, вполне годится.
Ты, кстати, завалил два момента - общие инженерные навыки и умение работать с документацией.
Думаю, что дав пару тестов на сообразительность получу полную картинку.
И она сильно не в твою пользу будет.
Думай, работай над собой.
Смысл? Все ваши закидоны не помогли вам набрать нормальных, а не "обезьян".
за что он туда попал
-----
Господа ХТМЛщики, когда Я их спросил вам как - порезать на единицы обработки или одним куском.
Ты не поверишь - вместо того чтобы ограничится необходимым они пожелали ВСЕ в куче...
10 Гиг там не было, но под 700 мб - имелось...
Господа ХТМЛщики, когда Я их спросил вам как - порезать на единицы обработки или одним куском.
Ты не поверишь - вместо того чтобы ограничится необходимым они пожелали ВСЕ в куче...
10 Гиг там не было, но под 700 мб - имелось...
Ну вот видите. Оказывается, у вас не одним файлом ваши 10 ГБ, а вы порезали. И потом в один маленький кусочек свои добавления делаете. И поди заранее знаете, в какой из кусочков добавлять надо.
ХТМЛщики работают с DOM. А кто им нормальный DOM создаст, а не в лучшем случае слепок местного участка разметки, когда всё кусками разбросано? Если файл так уж постоянно нужен, то проще всё в оперативке держать, загружая раз только при старте системы. Ну сколько займёт создание DOM из 700 МБ файла? Гигабайт 16, или даже 32? Цена вопроса даже сейчас, после взлёта цен на оперативку - 70-150 евро.
Что значит "а подумать"? Мне самому себе придумать задачу и её решить? Откуда я знаю, что тебе надо? Может ты тупо добавляешь всё к концу, переписывая последний закрывающий тег.
Мне тут пришла светлая до опупения мысль - надо XML представить в виде файлов и папок :D
<SomeNode> <SomeOtherNode someAtt="bla-bla" >bla-bla-bla</SomeOtherNode> <SomeCollection> <SomeItem>Item 1<SomeItem/> <SomeItem>Item 2<SomeItem/> <SomeItem>Item 3<SomeItem/> </SomeCollection> </SomeNode>
Все это безобразие можно замэпить на файловую систему:
..\ SomeNode\ SomoeOtherNode\ attributes.txt value.txt SomeCollection\ SomeItem.1\ value.txt SomeItem.2\ value.txt SomeItem.3\ value.txt
Это правда не совсем XML, да и похер :D Зато можно быстро вставить что угодно и куда угодно :D
Проще в БД загнать. В современных вроде есть какие штуки для поддержки иерархических данных.
А как вы потом этот XML собирать будете? Вам нужено либо кастомный data provider городить для такой сериализации или десериализации, либо прожку писать, которая будет всё это делать. Ну и для вставок и прочих обработок всё равно нужно где-то держать схему этого XML или файловой структуры, чтобы знать, куда вставлять. Или будете схему каждый раз при вставке воссоздавать из структуры каталогов? А тогда уложитесь в 20 мс?
Вообще, решение, в котором если и можно добиться 20 мс на добавление чего-то куда-то, то всё остальное принесено в жертву.
Мне тут пришла светлая до опупения мысль - надо XML представить в виде файлов и папок :D
Ага. Или ещё какой индекс. Структуру 10-и гигового xml в файлы... NTFS охренеет сразу. Она с кучей мелких файлов прям ну совсем никак. Потом охренеет винда до 10ки. Из-за ограничения длины полного имени файла на 260 символов.10-ка поживёт подольше, она после какого-то билда 32к символов поддерживает.
Ну и опять же - остаётся загадкой куда ж вставлять-то охота. По файловой системе искать файлики тоже времени стоит немало.
В общем сплошные загадки. Не смешно и не интересно уже :)