Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

​Элементарная задачка - XML, добавление

1904  1 2 3 4 5 все
Murr патриот28.09.21 19:42
Murr
28.09.21 19:42 

Элементарная задачка.


Для тех кто ЗНАЕТ решение - просьба не постить код и не давать полного описания.

Ссылки на требуемое изучить для получения решения - весьма приветствуются.

Аналогично в обсуждении - приветствуется указание на проблемы в приводимом коде,

но не желательно заменять пишущего в осознании и исправлении проблем - ему не впрок.


Задача.


Требуется - добавлять какие-то фрагменты в ХМЛ файл.
Для простоты - пусть они будут одинаковые по структуре ХМЛ.
Вроде как все работает, но... медленно. И чем дальше - тем медленнее.
Вместо 10 минут на добавление одного фрагмента надо сделать... хммм... 100 милисекунд... хотя, пожалуй, много.. 20-ти хватит...
Да, пока не забыл - работа с файлом - остается. т.е. если рубильник смайнают - все должно работать без потерь... но журналировать процесс не надо.

Никаких ограничений не ставится

- хочешь стандартные либы - будь ласка,

- хочешь штаны через голову - милости просим...

только одно ограничение - 20 милисек на добавление...

#1 
AlexNek патриот28.09.21 20:48
AlexNek
28.09.21 20:48 
в ответ Murr 28.09.21 19:42
20 милисек на добавление...

уточняю условия задачи хаха

100 МБ добавить в файл 10гиг, в произвольное место, на сетевом диске бебе

#2 
Murr патриот28.09.21 20:56
Murr
NEW 28.09.21 20:56 
в ответ AlexNek 28.09.21 20:48

Аааа... ну да, естественно...

Надо таки сказать - локальный диск, порция не более 4К...

Но ты же понимаешь какова цель у данной задачки?

Правильно - макнуть... потом - еще раз макнуть... пока не разозлится и не найдет решение... смущ

#3 
AlexNek патриот28.09.21 21:07
AlexNek
28.09.21 21:07 
в ответ Murr 28.09.21 20:56
Надо таки сказать

Надо таки сказать гораздо больше, что бы хоть кто то понял, что действительно требуется. смущ

Но у меня есть большие сомнения, что это кого то это заинтересует.

#4 
Murr патриот28.09.21 22:05
Murr
NEW 28.09.21 22:05 
в ответ AlexNek 28.09.21 21:07

Надо таки сказать гораздо больше, что бы хоть кто то понял, что действительно требуется.

-----

Да вроде все необходимое сказано.


Требуется именно то что написано - добавить в ХМЛ документ еще один кусок ХМЛа. Сделать это надо максимально быстро.

Добавилось - пишем локально, объем добавления - небольшой.


Пока что вроде стало понятно, что поднять документ в память, добавить и записать обратно - будет медленно.

Почему - пока не понятно. смущ (Не мне если что)

Был высказан вариант с высокой фрагментированностью дисков... Но, увы, искомое решение никак не зависит от фрагментированности.


Жду других вариантов...


есть большие сомнения, что это кого то это заинтересует

-----

Ну это как всегда - кто-то будет рыть чтобы найти ответ и чему-то в процессе научится, а кто-то будет говорить что стандарными либами это не сделать и, следовательно, решения нет... безум

#5 
AlexNek патриот28.09.21 22:44
AlexNek
NEW 28.09.21 22:44 
в ответ Murr 28.09.21 22:05
Сделать это надо максимально быстро

В начальных условия было определено конкретное время но не определено какое именно время нужно измерять спок


объем добавления - небольшой

Небольшой это сколько? Одна строка....

Обрабатывать еще как то нужно добавление?

А вставлять в какое место? А исходный файл можно менять? Типа метку для вставки сделать.

А исходный файл и вставки одинаковые или как получится? И т.п. и т.д. - а гришь что всё сказано.


чему-то в процессе научится

Учится можно тому, что хотя-бы интересно, ну или нужно. А тут еще и с таймером сидеть down


добавить в ХМЛ документ еще один кусок ХМЛа. Сделать это надо максимально быстро

В подобном виде, для какого-то конкретного файла и вставки можно еще как то обсуждать. А так ... ну ждите

#6 
Срыв покровов патриот28.09.21 23:19
NEW 28.09.21 23:19 
в ответ AlexNek 28.09.21 22:44

вроде не первый день на форуме, а высеры Мура всерьёз воспринимаете.

#7 
Murr патриот28.09.21 23:22
Murr
NEW 28.09.21 23:22 
в ответ Murr 28.09.21 22:05

Да, если кому надо чутка по-интереснее задачка, то сделаем так.


Документ - тот же.

А добавлять будем - из 30-ти разных потоков.

Естественно, надо решить проблему с синхронизацией записи из потоков... смущ

И если кто думает писать какие хреновы сложности - шел бы он лесом - код требуется совсеm простой...


#8 
Murr патриот28.09.21 23:37
Murr
28.09.21 23:37 
в ответ AlexNek 28.09.21 22:44

А тут еще и с таймером сидеть

-----

Вот и Я говорю - кто-то будет сидеть с таймером, а кто-то будет сидеть без таймера...


для какого-то конкретного файла

-----

Эээ... нет... не для конкретного.

Для конкретного ты напишешь решение номер один и оно пойдет в мусорник.

Пиши для любого какой тебе позже представят... улыб

#9 
Murr патриот28.09.21 23:40
Murr
NEW 28.09.21 23:40 
в ответ Срыв покровов 28.09.21 23:19

высеры Мура

-----

В данном случае "высеры Мура" имеют определенную цель...

Впрочем - как и всегда... спок

#10 
alex445 свой человек29.09.21 09:06
NEW 29.09.21 09:06 
в ответ Murr 28.09.21 23:37, Последний раз изменено 29.09.21 09:11 (alex445)
для какого-то конкретного файла

-----
Эээ... нет... не для конкретного.
Для конкретного ты напишешь решение номер один и оно пойдет в мусорник.
Пиши для любого какой тебе позже представят... улыб

Вы уже на Гитхабе со своим уникальным универсальным решением или даже продаёте свою либу как продукт? Или это никому не надо? )))


Как решать не знаю.


В приведённых вами условиях слишком много неоговорено, поэтому всегда можно не уложиться в отведённое время. Наиболее быстрая задача, как мне кажется, это иметь заранее заготовленный план такого большого XML файла - т.е. где у него с какого адреса или строки что расположено. Или даже разбить этот файл на куски. И при этом нужно заранее знать, куда вставлять - произвольно не означает в случайное место же, а в какой-то определённый участок, примерно положение которого вы знаете? Т.е. по-любому нужно делать инфраструктуру по обработке таких больших файлов - своего рода "базу данных по большим XML". В этом смысле, наверное, проще действительно хранить подобные данные в БД, и не в XML, а XML генерировать по запросу, или периодически и потом кешировать.


Я думаю, что если вы приведёте своё оригинальное решение, как вы успешно справились с этой задачей, на вас куча критики свалится, т.к. решение будет, скорее всего, либо неуниверсальным, либо требовать создание предварительной инфрастуктуры по обработке таких файлов для таких задач.

#11 
Программист коренной житель29.09.21 12:09
NEW 29.09.21 12:09 
в ответ Murr 28.09.21 19:42
Никаких ограничений не ставится
- хочешь стандартные либы - будь ласка,
- хочешь штаны через голову - милости просим...
только одно ограничение - 20 милисек на добавление...

Элементарно:

1) десериализуешь XML в нужный объект

2) добавляешь необходимые данные

3) сериализуешь объект в XML

4) если из-за огромных размеров XML описанная выше процедура не укладывается в требуемые 20 милисек (или если перезаписывать этот XML надо слишком часто, т.е. время на запись становится критичной), то выгоняешь ссаными тряпками мудака, который вместо БД решил использовать XML.

#12 
MrSanders коренной житель29.09.21 13:03
NEW 29.09.21 13:03 
в ответ Программист 29.09.21 12:09

С SAX будет побыстрее. Но я за тряпки :)

#13 
Срыв покровов патриот29.09.21 14:18
NEW 29.09.21 14:18 
в ответ Программист 29.09.21 12:09
если из-за огромных размеров XML описанная выше процедура не укладывается в требуемые 20 милисек (или если перезаписывать этот XML надо слишком часто, т.е. время на запись становится критичной), то выгоняешь ссаными тряпками мудака, который вместо БД решил использовать XML.

охуенный вывод.
это есть если тебе XML приходит от условного Finanzamt’а и его надо передать в фирму рога и копыта, то вы всю коммуникацию должны перевести на БД?!

#14 
alex445 свой человек29.09.21 14:31
NEW 29.09.21 14:31 
в ответ Срыв покровов 29.09.21 14:18, Последний раз изменено 29.09.21 14:45 (alex445)

Вообще, задача "в ооочень большой объём структурированных данных добавляем в произвольное место другие данные" - это больше для БД. Уж точно не единого текстового XML где-то в файловом хранилище.


Как я понимаю, единственное оправдание подобной задачи - вот откуда-то пришло и будет всегда так приходить (типа как тут сказали - из какого-нибудь амта), и повлиять мы на это не можем. Шеф сказал 20 мс и точка, из амта пришёл многогиговый XML и точка, нужно вставлять в произвольное место куски и точка, решение должно быть универсальным и точка. Ах, да - на решение 15 минут.

#15 
Программист коренной житель29.09.21 15:50
NEW 29.09.21 15:50 
в ответ Срыв покровов 29.09.21 14:18
это есть если тебе XML приходит от условного Finanzamt’а и его надо передать в фирму рога и копыта, то вы всю коммуникацию должны перевести на БД?!

Нет. Если тебе приходит XML от условного Finanzamt'а и его надо передать в фирму рога и копыта, то это разовая операция и время ее исполнения не играет большой роли.

А если тебе надо добиться скорости работы, то ты ищешь оптимальные средства для поставленной задачи.


На одном проекте у нас было куча пакетных данных и взаимосвязей между данными. Ну т.е. пакет данных типа А может быть связан с пакетом данных типа Б, но не может быть связан с пакетом данных типа С. Начальство решило, что оптимально использовать TFS, т.к. там все это есть из коробки плюс к этом данные срази в пакетах, плюс есть история изменений и много других плюшек. Когда я пришел в проект все уже было почти готово к запуску, но тем не менее я сказал начальству, что TFS для этих целей не подходит и стоит ожидать большую жопу. На тестах и презентации все летало. Выпустили в продакшен... и через месяц посыпались жалобы, что жескать система писец какая медленная. Сукой оказалась TFS :D Пришлось начальству краснеть, получать люлей и следующие месяца 3 мы переводили систему с TFS на MSSQL. Так что для каждой задачи надо подбирать подходящее решение.

#16 
Murr патриот29.09.21 15:53
Murr
NEW 29.09.21 15:53 
в ответ alex445 29.09.21 09:06

Как решать не знаю.

-----

Это Я вполне хорошо понимаю - задачка дана именно под то что ты не знаешь. улыб


слишком много неоговорено

-----

Уточняй. Что будет реально влиять на выполнение задачи - доопределим.


либо неуниверсальным, либо требовать

-----

А для тебя поставлены какие-то ограничения? Вроде как нет.

Извращайся как можешь/хочешь.

Гарантирую - когда будет приемлемое решение - будет весьма полезно.


#17 
Murr патриот29.09.21 16:02
Murr
NEW 29.09.21 16:02 
в ответ Программист 29.09.21 12:09

А если ЕСТЬ более простое решение, чем использование БД? безум


Ты, кстати, допустил ту же ошибку, которую уже разбирали: выполняешь парсинг всего файла, об котором в задании НИЧЕГО не говорится. смущ

#18 
Murr патриот29.09.21 16:10
Murr
29.09.21 16:10 
в ответ MrSanders 29.09.21 13:03

С SAX будет побыстрее.

-----

Насколько? Успеешь за 20 мил отсканить SAXom 10-20 гиг?

А если уже сейчас:

- понимаешь что не успеешь

- утверждается что решение есть

то надо как-то подумать над вопросом... смущ


Но я за тряпки

-----

Подсказка - посмотри из чего выплыла задачка. улыб

#19 
Murr патриот29.09.21 16:16
Murr
NEW 29.09.21 16:16 
в ответ alex445 29.09.21 14:31

Ах, да - на решение 15 минут.

-----

Вообще-то, тебе давалось два часа. смущ

А требуемый по заданию код - да, можно написать за 10-15 минут... спок


Как же ты, бедолага, будешь работать при таком подходе к решению задач... безум

Про тряпки тут уже поминали... перед этим еще ПМ поимеет по полной... спок

#20 
Программист коренной житель29.09.21 16:29
NEW 29.09.21 16:29 
в ответ Murr 29.09.21 16:02
А если ЕСТЬ более простое решение, чем использование БД?

У каждого инструмента есть своя область применение. Безусловно, орехи можно колоть и гидравлическим прессом, но есть и более подходяшие инструменты ;)


Ты, кстати, допустил ту же ошибку, которую уже разбирали: выполняешь парсинг всего файла, об котором в задании НИЧЕГО не говорится.

Нет, просто если у тебя есть 10гиг конфигурации, то использовать XML будет очень странный человек :) И этого странного человека надо гнать ссаными тряпками.

#21 
Срыв покровов патриот29.09.21 16:32
NEW 29.09.21 16:32 
в ответ Программист 29.09.21 15:50
Нет. Если тебе приходит XML от условного Finanzamt'а и его надо передать в фирму рога и копыта, то это разовая операция и время ее исполнения не играет большой роли

то, что она разовая, это ты на ходу сочинил.

#22 
Murr патриот29.09.21 16:41
Murr
NEW 29.09.21 16:41 
в ответ Программист 29.09.21 16:29

есть и более подходяшие инструменты

-----

Вот и Я не понимаю - зачем ты тянешь гудравлический пресс (БД), туда где он совершенно не нужен.


если у тебя есть 10гиг конфигурации, то использовать XML будет очень странный человек

-----

Скучно.

Есть - задача. Известно, что есть решение. Известно что решение - простое.

Так нет - обсуждается то, что задача изначально неправильная.

А она не неправильная - она - целевая... спок

#23 
MrSanders коренной житель29.09.21 16:51
NEW 29.09.21 16:51 
в ответ Murr 29.09.21 16:10, Последний раз изменено 29.09.21 17:22 (MrSanders)
Насколько? Успеешь за 20 мил отсканить SAXom 10-20 гиг?

Конечно нет. За 20 мс. 10 ГБ даже с диска прочитать не успеешь. Даже с ССД. Мегабайт 60 максимум.

- понимаешь что не успеешь
- утверждается что решение есть
то надо как-то подумать над вопросом... смущ

А что тут думать? Очередной "муркин высер". Который в конечном итоге через 100500 уточняющих вопросов сведётся к какой-то ерунде не имеющей ни малейшего отношения к изначальной формулировке вопроса.


PS Вангую что окажется что оффсет от начала файла заранее известен (искать не надо) и используется отлично работающая с random access файлами файловая система. Отсюда и ограничение в 4 К.

Или нет, это же мурка... Тут надо думать максимально нелогично...Какой-нибудь индекс сейчас всплывёт.

#24 
Программист коренной житель29.09.21 17:07
NEW 29.09.21 17:07 
в ответ Murr 29.09.21 16:41

Хранить и давать доступ для чтения и записи к 10ГБ структурированной информации - это задача для БД.


Есть - задача. Известно, что есть решение.

Нет даже решения, чтобы прочитать 10ГБ за 20милисекунд. Можно конечно записывать эти фрагменты тупо в конец файла, но не факт, что 10ГБ можно будет открыть за 20 милисекунд.

#25 
alex445 свой человек29.09.21 17:37
NEW 29.09.21 17:37 
в ответ Murr 29.09.21 15:53

Как решать не знаю.

-----

Это Я вполне хорошо понимаю - задачка дана именно под то что ты не знаешь. улыб


слишком много неоговорено

-----

Уточняй. Что будет реально влиять на выполнение задачи - доопределим.

Честно, мне лень дальше по этой задачке думать. Извините.


Давайте уже своё решение, и желательно без копирайта. ))

#26 
alex445 свой человек29.09.21 17:48
NEW 29.09.21 17:48 
в ответ MrSanders 29.09.21 16:51, Последний раз изменено 29.09.21 17:55 (alex445)
PS Вангую что окажется что оффсет от начала файла заранее известен (искать не надо) и используется отлично работающая с random access файлами файловая система. Отсюда и ограничение в 4 К.

У него было про случайные вставки - т.е. никаких заранее известных оффсетов и меток. Т. е. по идее нужно сначала найти место в фале, куда вставлять (т.е. просканировать его), затем вставить. Чтобы просканировать, нужно открыть целиком или простримить. И если место для встаки окажнтся в конце файла, то в 20 мс никак не уложиться.

#27 
Murr патриот29.09.21 18:42
Murr
NEW 29.09.21 18:42 
в ответ MrSanders 29.09.21 16:51

Конечно нет.

-----

Ну тогда не трогаем SAX...


Вангую

-----

Уже ближе.

Товарищ, которому задачка адресована, уже предлагал какие-то метки в файл помещать.


Какой-нибудь индекс сейчас всплывёт.

-----

Нее, не всплывет.

Бо, решение совершенно элементарное.

Даже при 30 потоках...



оффсет от начала файла заранее известен (искать не надо)

-----

В том решении об котором ты подумал - это решение номер два - нет. спок

Просто есть еще более простой вариант при котором будет ответ - да.

Думаю, что подумав и посмотрев в доки ты его найдешь.

А когда найдешь, будь ласка, подтверди наличие решения и поделись ТОЛЬКО ссылкой на доку... Ок?



#28 
Murr патриот29.09.21 18:54
Murr
29.09.21 18:54 
в ответ Программист 29.09.21 17:07

давать доступ для чтения

-----

Где именно в задании есть это требование? безум


Нет даже решения, чтобы прочитать 10ГБ за 20милисекунд.

-----

Ну если ты ЭТО понимаешь, то зачем говоришь что надо читать?

Напряги извилины, перечитай задание, подумай, ковырни доки...

... и будем смеяться вместе над примитивностью решения. смущ

Только - тссс... не подсказывай...


но не факт, что 10ГБ можно будет открыть за 20 милисекунд

-----

А с каких пор размер файла начал влиять на время создания дескриптора доступа?

Ну если там шадов копи делается, маппинг или какой-нибудь индекс система строит - то да...

но просто открыть файл у меня это около 22 мс...

#29 
Murr патриот29.09.21 19:06
Murr
NEW 29.09.21 19:06 
в ответ alex445 29.09.21 17:37

Честно, мне лень дальше по этой задачке думать. Извините.

-----

Представляю рожу ПМ при таком подходе к выполнению работы... безум


Давайте уже своё решение

-----

Зачем?

Тебе - не нужно.

А остальные в состоянии его найти вполне самостоятельно...

#30 
Программист коренной житель30.09.21 08:49
NEW 30.09.21 08:49 
в ответ Murr 29.09.21 18:54
но просто открыть файл у меня это около 22 мс...

т.е. ты уже не укладываешься в собственные требования :) а ведь ты еще даже не начал писать и сохранять ;)

#31 
Murr патриот30.09.21 11:55
Murr
NEW 30.09.21 11:55 
в ответ Программист 30.09.21 08:49

Воткну ФАТ вместо НТФС и уложусь... улыб

#32 
Программист коренной житель30.09.21 12:48
30.09.21 12:48 
в ответ Murr 30.09.21 11:55
Воткну ФАТ вместо НТФС и уложусь...

Ну вот, пошли левые отмазки ;)

Все равно не уложишься ;) т.к. кроме открывания файла надо будет еще записать данные ;)

#33 
MrSanders коренной житель30.09.21 13:29
NEW 30.09.21 13:29 
в ответ Murr 30.09.21 11:55
Воткну ФАТ вместо НТФС и уложусь... улыб

Садись, два. В FAT32 максимальный размер файла 4 гига.

#34 
schizo коренной житель30.09.21 13:32
schizo
NEW 30.09.21 13:32 
в ответ MrSanders 30.09.21 13:29

http://xml.silmaril.ie/includes.html

Храни Вас Г-дь!
#35 
MrSanders коренной житель30.09.21 14:13
NEW 30.09.21 14:13 
в ответ schizo 30.09.21 13:32

Инклюдом сократим количество записываемой информации до одной строчки. Но всё равно надо сначала найти место, где его вставить (в 10 гигах), а потом записать изменение.

Или вы думаете Мурр собрал 10 гигов данных в 10.000 файликах по 1 мегу и все их заинклюдил в один большой из 10.000 инклюдов? Не, он может, конечно :)

#36 
Murr патриот30.09.21 19:29
Murr
NEW 30.09.21 19:29 
в ответ Программист 30.09.21 12:48

надо будет еще

------

Успею.

#37 
Murr патриот30.09.21 19:32
Murr
NEW 30.09.21 19:32 
в ответ MrSanders 30.09.21 13:29

максимальный размер файла 4 гига

-----

Хе-хе... аккурат на это - пофиг дважды.

Когда докопаешься до решения - поймешь. смущ

#38 
Murr патриот30.09.21 19:37
Murr
NEW 30.09.21 19:37 
в ответ MrSanders 30.09.21 14:13

надо сначала найти место

------

А что именно ты собираешься искать? смущ

#39 
Murr патриот01.10.21 04:19
Murr
NEW 01.10.21 04:19 
в ответ Murr 30.09.21 19:37

Для сомневающихся в возможностях решения задачи,

По результатам фактического теста (под отладчиком Студии) - 3883 милисекунд на 10.000 добавлений...

Время включает подготовку отдельного хмл для каждой записи - т.е. реальное время где-то 0.3 мс/добавление...

Все записи реально добавлены в файл. Записи - короткие - всего в файле 2.7Мб...


Ах, даа... старый лапоть - ССД, НТФС, И7, 8 Гб РАМ...

#40 
MrSanders коренной житель01.10.21 11:37
NEW 01.10.21 11:37 
в ответ Murr 30.09.21 19:37
А что именно ты собираешься искать? смущ

Я? Ничего. Это ты что-то искать должен. Ты же что-то куда-то вставляешь. А куда именно вставляешь - не знаешь.

Значит что? Значит ты должен найти место куда вставлять. Для поиска этого места в 10-и гиговом XML файле тебе в худшем случае (если это место будет в конце файла) придётся прочитать весь файл.

А теперь начинай юлить "я имела в виду не это, я не это имела в виду".

#41 
MrSanders коренной житель01.10.21 11:40
NEW 01.10.21 11:40 
в ответ Murr 30.09.21 19:32

Хе-хе... аккурат на это - пофиг дважды.

Когда докопаешься до решения - поймешь. смущ

Я ж говорю - садись, два. Правильный ответ был бы "а я exFAT использовать собираюсь".

#42 
Murr патриот01.10.21 15:09
Murr
NEW 01.10.21 15:09 
в ответ MrSanders 01.10.21 11:37

А куда именно вставляешь - не знаешь.

-----

Кто тебе это сказал? смущ

Я назвал время - 0.3мс/вставка - по результату фактического тестирования - оно тебе хоть что-нибудь говорит?

Если поможет - оно не будет сильно менятся с ростом размера файла... какие-нибудь 0.02 мс... система больше задержать может...


придётся прочитать весь файл

-----

Зачем?

Уже сейчас ясно, что успеть поднять 10 гиг с диска за отводимое время не получится - ни документом, ни сахом, ни риадом - канал чтения 6 гб/с мах...

Начинай говорить, что надо решить задачу по второму варианту - т.е, найти ДокументЭлемент, потом позиционироваться примерно в конец и искать начало закрывающего тега... И сразу - второй вариант тоже идет в помойку, хотя и может уложится по времени в 20 мс...


Правильный ответ был бы

-----

Не был бы, а уже дан - пофиг дважды.

Фат берется по единственной причине - избавится от контроля прав доступа.

Я знаю, что под виндой есть возможность заблокировать этот контроль для определенных файлов под НТФС, но, увы, не умею этого делать.

А ограничения на размер могут быть любыми - как ты и говорил - будет ограничение в мегабайт - напишем 10К инклюдов... безум


П.С. "Сними погоны - стань обезьяном" (с) Мурр, сегодня. спок


#43 
MrSanders коренной житель01.10.21 15:35
NEW 01.10.21 15:35 
в ответ Murr 01.10.21 15:09

придётся прочитать весь файл

-----

Зачем?

Уже сейчас ясно, что успеть поднять 10 гиг с диска за отводимое время не получится - ни документом, ни сахом, ни риадом - канал чтения 6 гб/с мах...

Что и подводит к мысли что задачу в том виде, как они сформулирована (вставка в произвольное место xml фала), решить невозможно. Отсюда вывод: очередной "муркин высер".

Учись формулировать задания.

Подсказка из зала: попробуй написать, а как именно ты хочешь задавать место вставки в XML? "Вставь <a>bbb</a> на 8-ю строчку"? Или "Вставь abc как значение элемента /document/chapter[@number=1]" или как?

#44 
alex445 свой человек01.10.21 16:19
NEW 01.10.21 16:19 
в ответ Murr 01.10.21 15:09

На собесах подобные же задачки даёте?

#45 
Murr патриот01.10.21 17:15
Murr
NEW 01.10.21 17:15 
в ответ MrSanders 01.10.21 15:35

а как именно ты хочешь задавать место вставки в XML?

-----

А подумать?

Ты же, блин, инженер. Подойди к задаче с инженерной позиции - что есть, что тормозит, как устранить? - и все решится за пару минут.

#46 
Murr патриот01.10.21 17:25
Murr
01.10.21 17:25 
в ответ alex445 01.10.21 16:19

На собесах подобные же задачки даёте?

-----

На собесе - нет - бессмысленно, ибо задача не на знание определенных вещей.

Мог бы и не спрашивать - тебе на нее дали 2 часа - на собесе столько времени на тебя тратить никто не будет.

А вот в качестве проверки навыков - да, вполне годится.

Ты, кстати, завалил два момента - общие инженерные навыки и умение работать с документацией.

Думаю, что дав пару тестов на сообразительность получу полную картинку.

И она сильно не в твою пользу будет.

Думай, работай над собой.

#47 
Murr патриот01.10.21 17:30
Murr
NEW 01.10.21 17:30 
в ответ MrSanders 01.10.21 15:35

решить невозможно

-----

0.3 мс/вставка смущ


попробуй написать, а как именно ты хочешь задавать место вставки в ХМЛ?

-----

??? - повторюсь - 0.3 мс/вставка

Это - по факту - с определением всех необходимых моментов - данные в файле, документ валиден... улыб

#48 
MrSanders коренной житель01.10.21 19:15
NEW 01.10.21 19:15 
в ответ Murr 01.10.21 17:15

а как именно ты хочешь задавать место вставки в XML?

-----

А подумать?

Что значит "а подумать"? Мне самому себе придумать задачу и её решить? Откуда я знаю, что тебе надо? Может ты тупо добавляешь всё к концу, переписывая последний закрывающий тег.

#49 
Murr патриот01.10.21 19:19
Murr
NEW 01.10.21 19:19 
в ответ MrSanders 01.10.21 19:15

Может ты тупо добавляешь всё к концу, переписывая последний закрывающий тег.

-----

Это решение номер два. Оно идет в мусорник... смущ

#50 
alex445 свой человек01.10.21 19:44
NEW 01.10.21 19:44 
в ответ Murr 01.10.21 17:25, Последний раз изменено 01.10.21 19:44 (alex445)
На собесах подобные же задачки даёте?
-----
На собесе - нет - бессмысленно, ибо задача не на знание определенных вещей.
Мог бы и не спрашивать - тебе на нее дали 2 часа - на собесе столько времени на тебя тратить никто не будет.
А вот в качестве проверки навыков - да, вполне годится.
Ты, кстати, завалил два момента - общие инженерные навыки и умение работать с документацией.
Думаю, что дав пару тестов на сообразительность получу полную картинку.
И она сильно не в твою пользу будет.
Думай, работай над собой.

Смысл? Все ваши закидоны не помогли вам набрать нормальных, а не "обезьян".

#51 
Murr патриот01.10.21 19:50
Murr
NEW 01.10.21 19:50 
в ответ alex445 01.10.21 19:44

Смысл?

-----

Со временем - поймешь...

#52 
Срыв покровов патриот01.10.21 20:53
01.10.21 20:53 
в ответ alex445 01.10.21 19:44
Смысл? Все ваши закидоны не помогли вам набрать нормальных, а не "обезьян".

мотивация - стать такой же рокзвездой как Мур

Чтобы под старость лет разгребать говны мамонта.

#53 
schizo коренной житель01.10.21 23:28
schizo
NEW 01.10.21 23:28 
в ответ Срыв покровов 01.10.21 20:53

я вот думаю: эксэмэль на 10 Гб - это же ад программиста. за что он туда попал

Храни Вас Г-дь!
#54 
Murr патриот01.10.21 23:48
Murr
NEW 01.10.21 23:48 
в ответ schizo 01.10.21 23:28

за что он туда попал

-----

Господа ХТМЛщики, когда Я их спросил вам как - порезать на единицы обработки или одним куском.

Ты не поверишь - вместо того чтобы ограничится необходимым они пожелали ВСЕ в куче...

10 Гиг там не было, но под 700 мб - имелось...

#55 
alex445 свой человек02.10.21 02:37
NEW 02.10.21 02:37 
в ответ Murr 01.10.21 23:48, Последний раз изменено 02.10.21 02:42 (alex445)
Господа ХТМЛщики, когда Я их спросил вам как - порезать на единицы обработки или одним куском.
Ты не поверишь - вместо того чтобы ограничится необходимым они пожелали ВСЕ в куче...
10 Гиг там не было, но под 700 мб - имелось...

Ну вот видите. Оказывается, у вас не одним файлом ваши 10 ГБ, а вы порезали. И потом в один маленький кусочек свои добавления делаете. И поди заранее знаете, в какой из кусочков добавлять надо.


ХТМЛщики работают с DOM. А кто им нормальный DOM создаст, а не в лучшем случае слепок местного участка разметки, когда всё кусками разбросано? Если файл так уж постоянно нужен, то проще всё в оперативке держать, загружая раз только при старте системы. Ну сколько займёт создание DOM из 700 МБ файла? Гигабайт 16, или даже 32? Цена вопроса даже сейчас, после взлёта цен на оперативку - 70-150 евро.

#56 
alex445 свой человек02.10.21 02:43
NEW 02.10.21 02:43 
в ответ alex445 02.10.21 02:37

А вообще, у вас странные какие-то вводные. XML в десятки ГБ, HTML под 1 ГБ. Хранить данные в БД и постранично выводить?

#57 
Программист коренной житель03.10.21 19:05
NEW 03.10.21 19:05 
в ответ MrSanders 01.10.21 19:15
Что значит "а подумать"? Мне самому себе придумать задачу и её решить? Откуда я знаю, что тебе надо? Может ты тупо добавляешь всё к концу, переписывая последний закрывающий тег.

Мне тут пришла светлая до опупения мысль - надо 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

#58 
alex445 свой человек03.10.21 20:06
NEW 03.10.21 20:06 
в ответ Программист 03.10.21 19:05, Последний раз изменено 03.10.21 20:11 (alex445)

Проще в БД загнать. В современных вроде есть какие штуки для поддержки иерархических данных.


А как вы потом этот XML собирать будете? Вам нужено либо кастомный data provider городить для такой сериализации или десериализации, либо прожку писать, которая будет всё это делать. Ну и для вставок и прочих обработок всё равно нужно где-то держать схему этого XML или файловой структуры, чтобы знать, куда вставлять. Или будете схему каждый раз при вставке воссоздавать из структуры каталогов? А тогда уложитесь в 20 мс?


Вообще, решение, в котором если и можно добиться 20 мс на добавление чего-то куда-то, то всё остальное принесено в жертву.

#59 
MrSanders коренной житель03.10.21 21:33
NEW 03.10.21 21:33 
в ответ Программист 03.10.21 19:05
Мне тут пришла светлая до опупения мысль - надо XML представить в виде файлов и папок :D

Ага. Или ещё какой индекс. Структуру 10-и гигового xml в файлы... NTFS охренеет сразу. Она с кучей мелких файлов прям ну совсем никак. Потом охренеет винда до 10ки. Из-за ограничения длины полного имени файла на 260 символов.10-ка поживёт подольше, она после какого-то билда 32к символов поддерживает.

Ну и опять же - остаётся загадкой куда ж вставлять-то охота. По файловой системе искать файлики тоже времени стоит немало.


В общем сплошные загадки. Не смешно и не интересно уже :)

#60 
Murr патриот04.10.21 04:14
Murr
NEW 04.10.21 04:14 
в ответ Программист 03.10.21 19:05

да и похер :D

-----

А чо - это мысля!!!

Токма незабудь дописать драйвер, который позволит работать с этим как с полноценным ХМЛ-документом... спок

#61 
Murr патриот04.10.21 04:18
Murr
NEW 04.10.21 04:18 
в ответ alex445 03.10.21 20:06

решение, в котором если и можно добиться 20 мс на добавление чего-то куда-то, то всё остальное принесено в жертву

-----

Хммм...

Применяемое мною решение никаких жертв не требует.

И без этих ненужных жертв все отрабатвает за 0.4 мс... спок

#62 
Murr патриот04.10.21 04:20
Murr
NEW 04.10.21 04:20 
в ответ MrSanders 03.10.21 21:33

не интересно уже

-----

А чо - часть мысли вполне здравая... вот развитие - подкачало... смущ

#63 
Murr патриот04.10.21 04:26
Murr
NEW 04.10.21 04:26 
в ответ alex445 02.10.21 02:43

странные какие-то вводные

-----

Конечно.

Ведь они даны именно под то, чего ты не знаешь. спок

Нахождение решения дало бы тебе знания в двух областях в которых ты откровенно слаб...

#64 
Программист коренной житель04.10.21 09:08
NEW 04.10.21 09:08 
в ответ alex445 03.10.21 20:06
Проще в БД загнать.

Это задача от Murr'а, там нет места для "проще" :D Тем более, что про ДБ ему сразу сказали и вариант с ДБ не подходит :D


А как вы потом этот XML собирать будете?

Кастомный сериализатор/десериализатор. Да и не нужно это все собирать ;) Задание состоит в том, чтобы добавлять данные ;)

#65 
Программист коренной житель04.10.21 09:13
NEW 04.10.21 09:13 
в ответ MrSanders 03.10.21 21:33
Потом охренеет винда до 10ки.

Винды до 10ки уже давно не поддерживаются майкрософтом :D


Из-за ограничения длины полного имени файла на 260 символов.

Ну так UNC имена решают ;)


Ну и опять же - остаётся загадкой куда ж вставлять-то охота. По файловой системе искать файлики тоже времени стоит немало.

XPath дает путь к каталогу, так что надо просто создать папочку, если ее еще нет, и записать туда нужную информацию.

#66 
Программист коренной житель04.10.21 09:16
NEW 04.10.21 09:16 
в ответ Murr 04.10.21 04:14
Токма незабудь дописать драйвер, который позволит работать с этим как с полноценным ХМЛ-документом...

Драйвер там не нужен. Простого сериализатора/десериализатора вполне хватит.

Да и что ты понимаешь под "работой как с полноценным XML-документом"?

#67 
MrSanders коренной житель04.10.21 10:16
NEW 04.10.21 10:16 
в ответ Программист 04.10.21 09:13
XPath дает путь к каталогу, так что надо просто создать папочку, если ее еще нет, и записать туда нужную информацию.

Можно, конечно. Но поискать-то придётся. А если у нас в каталоге пара тысяч подкаталогов (да, для одинаковых элементов придётся ещё какие-то индексы придумывать, двоеточие кодировать...), то просто получить их список легко займёт все 20 мс.

Но XPath-у места тут нет. На 10 гигах поиск по XPath займёт несколько секунд. Если у нас памяти хватит. XPath только на DOMе работает (если мне склероз не изменяет...)

#68 
alex445 свой человек04.10.21 16:32
NEW 04.10.21 16:32 
в ответ Murr 04.10.21 04:18

Применяемое мною решение никаких жертв не требует.

И без этих ненужных жертв все отрабатвает за 0.4 мс...

Почему вы ещё не на Гитхабе с революционным решением, или не продаёте его как продукт? Или вы уже?

#69 
alex445 свой человек04.10.21 16:36
NEW 04.10.21 16:36 
в ответ Murr 04.10.21 04:26

странные какие-то вводные

-----

Конечно.

Ведь они даны именно под то, чего ты не знаешь. спок

Нахождение решения дало бы тебе знания в двух областях в которых ты откровенно слаб...

Да никто уже давно из нормальных людей не использует XML для хранения данных. Если чисто хранение, то джейсон лучше подходит - не такой многословный.


Кстати, ваш метод для джейсона сработает?

#70 
Murr патриот04.10.21 17:26
Murr
NEW 04.10.21 17:26 
в ответ Программист 04.10.21 09:08

Задание состоит в том, чтобы добавлять данные ;)

-----

Наконец-то часть задачи ПОНЯТА!!!


ДОБАВЛЯТЬ!!! и, бля, как можно быстрее... смущ

#71 
Murr патриот04.10.21 17:28
Murr
NEW 04.10.21 17:28 
в ответ Программист 04.10.21 09:16

Да и что ты понимаешь под "работой как с полноценным XML-документом"?

-----

Стандартные либы должны работать с этим как с обычным ХМЛ-документом. спок

#72 
Murr патриот04.10.21 17:36
Murr
NEW 04.10.21 17:36 
в ответ alex445 04.10.21 16:36

ваш метод для джейсона сработает?

-----

Не проверял.

Но, видишь ли, если применяемое решение не будет работать на джейсоне - всегда можно применить ту же методику по которой получено решение и найти что-то подходящее...

Твои проблемы в двух вещах :

- очень мало знаешь

- не умеешь быстро изучать проблему.

Работай над собой...

#73 
Программист коренной житель04.10.21 18:08
NEW 04.10.21 18:08 
в ответ Murr 04.10.21 17:28, Последний раз изменено 04.10.21 18:09 (Программист)
Стандартные либы должны работать с этим как с обычным ХМЛ-документом.

Стандартные либы - это какие? Да и собственно говоря зачем им это? :) XML на несколько гигов - в принципе нерабочая история :)

#74 
Программист коренной житель04.10.21 18:10
NEW 04.10.21 18:10 
в ответ Murr 04.10.21 17:26, Последний раз изменено 04.10.21 18:11 (Программист)
Наконец-то часть задачи ПОНЯТА!!!

Прикол в том, что задача не понята ТОБОЙ :)

Точнее говоря, тобой не понята групость и несуразность этой задачи.

#75 
uscheswoi_82 свой человек04.10.21 18:34
NEW 04.10.21 18:34 
в ответ Murr 28.09.21 19:42
Вместо 10 минут на добавление одного фрагмента надо сделать... хммм... 100 милисекунд... хотя, пожалуй, много.. 20-ти хватит...

Имхо всё зависит наверное от архитектуры, типа диска и файловой системы. Если это всё делать в ОЗУ или на SSD, то наверное будет быстрее, не зря ведь IMDB наберает популярность. Может что-нибудь такое https://stackoverflow.com/questions/4942884/how-to-create-in-memory-xml-document-and-get-string-out-of-it или http://csharphelper.com/blog/2014/09/build-a-formatted-xml-document-in-memory-in-c/?

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#76 
Murr патриот04.10.21 20:31
Murr
NEW 04.10.21 20:31 
в ответ Программист 04.10.21 18:08

XML на несколько гигов - в принципе нерабочая история :)

-----

ХМЛ на несколько гигов - это достаточно регулярная задача.


Стандартные либы - это какие? Да и собственно говоря зачем им это? :)

-----

Скажем так - все что в System.Xml.*...


Это - не зачем, для чего.

Целей у задачи много.

Одна из целей - достичь понимания того, что РАМа не бесконечна и надо уметь работать не только с обьектом в памяти.

Другая - что мало не знать - знать все невозможно - но надо еще оставаться тупым, не изучая ничего нового... или старого, что не было изучено. безум


#77 
Murr патриот04.10.21 20:38
Murr
NEW 04.10.21 20:38 
в ответ uscheswoi_82 04.10.21 18:34

всё зависит наверное от

-----

Я привел результаты тестового прогона - 10.000 вставок - 3883 мс... и характеристики железа на котором выполнялся тест.

#78 
alex445 свой человек04.10.21 23:46
NEW 04.10.21 23:46 
в ответ Программист 04.10.21 18:10, Последний раз изменено 05.10.21 00:10 (alex445)
Прикол в том, что задача не понята ТОБОЙ :)
Точнее говоря, тобой не понята групость и несуразность этой задачи.

Он не может отказаться. Менеджер сказал - значит закон.


А что, правда увольняют за то, что подобной задачи решить не смог? Есть такой подход - до первого проё...а. Т.е. что бы ты ни сделал, какие бы заслуги ни были, а после первого же проё...а дают пинка под зад. А то и просто дают, если найдут кого получше.

#79 
alex445 свой человек05.10.21 00:11
NEW 05.10.21 00:11 
в ответ Murr 04.10.21 20:31
Другая - что мало не знать - знать все невозможно - но надо еще оставаться тупым, не изучая ничего нового... или старого, что не было изучено. безум

Я не понимаю, почему решение подобных задач вы считаете за "новое" и "нетупое".

#80 
Murr патриот05.10.21 01:46
Murr
NEW 05.10.21 01:46 
в ответ alex445 05.10.21 00:11, Последний раз изменено 05.10.21 01:52 (Murr)

Потому что у тебя в принципе отсутствует возможность решать подобные задачи - для тебя это новое.

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

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

#81 
Программист коренной житель05.10.21 10:27
NEW 05.10.21 10:27 
в ответ Murr 04.10.21 20:31
ХМЛ на несколько гигов - это достаточно регулярная задача.

Это только в твоем странном мире это регулярная задача. Нормальные люди в таких случаях используют БД.


Одна из целей - достичь понимания того, что РАМа не бесконечна и надо уметь работать не только с обьектом в памяти.
Другая - что мало не знать - знать все невозможно - но надо еще оставаться тупым, не изучая ничего нового... или старого, что не было изучено.

Странно, что нет цели научиться использовать подходящий к конкретным целям инструментарий :)

#82 
Программист коренной житель05.10.21 10:36
NEW 05.10.21 10:36 
в ответ alex445 04.10.21 23:46
Менеджер сказал - значит закон.

Менеджер не марсианин. У него есть голова и он восприимцив к аргументам. Особенно, если аргументировать цифрами.

Ты себе не представляешь сколько "нерушимых" указаний менеджеров было изменено. И сколько раз менялись подходы с "мы всегда так делали и будем делать дальше" на что-то вменяемое.


Любые изменения - это вопрос денег. С одной стороны деньги на непосредственное изменение и с другой потери, в том числе и репутационные, из-за использования неправильной технологии. Как только переделать становиться дешевле, сразу отдается команда на переделку. Так что остается только доказать менеджеру, что переделка будет дешевле.


А что, правда увольняют за то, что подобной задачи решить не смог? Есть такой подход - до первого проё...а.

Ты же понимаешь, что это зависит от проеба :) Но в общем случае нет, это неправда.

#83 
alex445 свой человек05.10.21 13:57
NEW 05.10.21 13:57 
в ответ Программист 05.10.21 10:36

Менеджер не марсианин. У него есть голова и он восприимцив к аргументам. Особенно, если аргументировать цифрами.

Ты себе не представляешь сколько "нерушимых" указаний менеджеров было изменено. И сколько раз менялись подходы с "мы всегда так делали и будем делать дальше" на что-то вменяемое.

Может Мурр не может перечить менеджеру. Кто знает, что у него там за условия труда.

#84 
Срыв покровов патриот05.10.21 14:00
NEW 05.10.21 14:00 
в ответ alex445 05.10.21 13:57

какие могут быть условия труда у негра?

#85 
schizo коренной житель05.10.21 14:03
schizo
NEW 05.10.21 14:03 
в ответ Срыв покровов 05.10.21 14:00

всякие могут быть. зачем устраиваться на работу в банку с пауками?

Храни Вас Г-дь!
#86 
Программист коренной житель05.10.21 14:59
NEW 05.10.21 14:59 
в ответ alex445 05.10.21 13:57
Может Мурр не может перечить менеджеру. Кто знает, что у него там за условия труда.

Скорее Мурр в принципе не может перечить менеджеру. Более того, тех, кто может перечить менеджеру не так уж и много. Плюс много зависит от менеджера. У нас пару месяцев назад одного мужика уволили одним днем (что в Германии вообще нонсенс) за то, что перечил менеджеру...

Так что всякое бывает, но большинство менеджерам не перечит...

#87 
Срыв покровов патриот05.10.21 15:47
NEW 05.10.21 15:47 
в ответ Программист 05.10.21 14:59

одним днём это прям как в аСаШАй из офиса на мороз?

#88 
Программист коренной житель05.10.21 15:57
NEW 05.10.21 15:57 
в ответ Срыв покровов 05.10.21 15:47

Да. Ну понятно, что кундигунгфрист и все такое. Просто в течении кундигунгфриста он уже не ходил на работу.

#89 
MrSanders коренной житель05.10.21 16:16
NEW 05.10.21 16:16 
в ответ Программист 05.10.21 15:57

Ну, просто не стоит забывать, что в отличие от тех же США он мог бы и оспорить увольнение и остаться работать. Но не захотел. Работу сейчас найти не сложно, да и зарплату повысить.

Блин, почему мои менеджеры меня не увольняли, а? 3 месяца на зарплату дома посидеть... Красота! :)

#90 
alex445 свой человек05.10.21 18:07
NEW 05.10.21 18:07 
в ответ MrSanders 05.10.21 16:16
Блин, почему мои менеджеры меня не увольняли, а? 3 месяца на зарплату дома посидеть... Красота! :)

Так того, которого за день, ему может и не платили ничего. Вчера ты перечил менеджеру, а сегодня утром твои вещи стоят у входа и твой пропуск не считывается на входе.

#91 
Срыв покровов патриот05.10.21 19:44
05.10.21 19:44 
в ответ Программист 05.10.21 15:57
Да. Ну понятно, что кундигунгфрист и все такое. Просто в течении кундигунгфриста он уже не ходил на работу.

Это не «да», это «нет»

Тебе 1-3 месяца платят за то, что сидишь дома.

#92 
Срыв покровов патриот05.10.21 19:47
NEW 05.10.21 19:47 
в ответ alex445 05.10.21 18:07
Так того, которого за день, ему может и не платили ничего. Вчера ты перечил менеджеру, а сегодня утром твои вещи стоят у входа и твой пропуск не считывается на входе.

вчера ты что-то забористое курил, а сегодня пишешь на форуме))

#93 
alex445 свой человек05.10.21 20:12
NEW 05.10.21 20:12 
в ответ Срыв покровов 05.10.21 19:47

"...мы его не любим, а он тоже на форум зашёл"

#94 
alex445 свой человек05.10.21 20:15
NEW 05.10.21 20:15 
в ответ Срыв покровов 05.10.21 19:44

Это не «да», это «нет»

Тебе 1-3 месяца платят за то, что сидишь дома.

В России тоже вроде всякие такие законы есть, чтобы пособие по увольнению или как там. Только по факту не так уж редко ничего не получаешь. Обычно зарплату делят на оклад и премию, если ты перестаёшь устраивать, тебе просто премию режут и ты сам уходишь, по собственному желанию, не дожидаясь увольнения от работодателя. А если сам ушёл - то выплаты по увольнению не положены.

#95 
Срыв покровов патриот05.10.21 21:50
NEW 05.10.21 21:50 
в ответ alex445 05.10.21 20:15

А в Никарагуа с этим как?

#96 
Murr патриот06.10.21 01:56
Murr
NEW 06.10.21 01:56 
в ответ Программист 05.10.21 10:27

Странно, что нет

-----

Ничего странного - просто проявится как следствие...

#97 
Murr патриот06.10.21 02:05
Murr
NEW 06.10.21 02:05 
в ответ Программист 05.10.21 14:59

Скорее Мурр в принципе не может перечить менеджеру.

-----

Мурр предпочитает работать с теми кому не нужно перечить.

Высказать свою позицию по вопросу - может всегда.

И выполнить работу именно так как требует менеджер - тоже.

Вот чего Мурр не делает - не исправляет то, что сделано после обьяснения непригодности решения... до признания его непригодности менеджером.

#98 
1 2 3 4 5 все