powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Для любителей поворчать ...
19 сообщений из 44, страница 2 из 2
Для любителей поворчать ...
    #39276216
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EoltВладимир2012Результат?
Врагу не пожелал бы.


сама концепция огромных XML файлов порочна, XML-ю место в конфигах, а для файлов размерами десятки мегов нужен бинарный формат
Дело не в размере а в концепциях работы с ним. Конечно если открывать его в текстовых редакторах
(изначально позиционировался как Human-readable) то можем словить "срыв крышы" у многих популярных
редакторов текста а некоторые IDE просто предупреждают дексыть что file is too large.
Кроме того я часто встречал попытки делать экспорт из БД в XML. При любых раскладах CSV получается
компактнее а в XML мы несем неоправданные расходы.

По поводу конфигов веб-серверов и проектов. У меня все эти ваши web.xml, pom.xml, и еще более уродливые Apache-конфиги вызывают
оторопь и изумление. Только диву даешся как админам не лень в ssh консолях править эти нелепые гроздья
угловых скобок и еще не ошибиться при экранированиях e.t.c. Ну да бох с ними. Админы - люди подневольные.
Взяли инструкцию и фиксят сприпя зубами.

Но мы-то? В эпоху JSON. Или Yaml. Давно уже пора спрыгнуть с этово чертова XML в части работы с списками свойств.
Да что там говорить. Иногда извинительнее будет даже ini-файл взять. Без понтов.
...
Рейтинг: 0 / 0
Для любителей поворчать ...
    #39276226
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xml у меня 58MB.
Честно подождал 10мин. За это время FAR поменял 60% символов.
И это не смешно!

Обратил внимание, что во время выполнения замены у FAR постоянно скачет используемая им память.
То 120MB, то 247Mb, то 360MB.
По всей видимости они используют строковые функции ... /то бишь чегой-то там делают с строкой длиной 61253082 символов/.
И это не смешно!
...
Рейтинг: 0 / 0
Для любителей поворчать ...
    #39276269
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012, Странные у тебя аномалии.

Попробуй в nodepad++ для сравнения
...
Рейтинг: 0 / 0
Для любителей поворчать ...
    #39276279
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonСтранные у тебя аномалии.Sorry.
В панели FAR подвожу курсор к xml, жму F4, затем Ctrl+F7.
В первой строке ввожу "<", во второй "1", жму Enter и выбираю "Все".

А что эта аномаль только у меня проявляется?
Что-то не верится. Компьютер на работе и дома весьма не плохой /и все на них работает "шустро"/ ...
...
Рейтинг: 0 / 0
Для любителей поворчать ...
    #39276289
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПопробуй в nodepad++ для сравненияИ зачем только вы мне это посоветовали!?
Этот редактор отхватил уже 1.3GB памяти и работает, работает, работает, работает, ...
Уже прошло минут 5 и ...
О ужас Windows аварийно его завершила!

Выводы.
М-да.
...
Рейтинг: 0 / 0
Для любителей поворчать ...
    #39276298
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообщем качнул исходники FAR и нашел в нем функцию, производящюю замену текста.

C:\Program Files (x86)\CollabNet\Subversion Client\fardev\unicode_far\editor.cpp
Line 3392
BOOL Editor::Search(int Next)

Для тех кто хочет поковырять привожу ссылку для закачки исходников FAR:
svn co http://svn.code.sf.net/p/farmanager/code/trunk fardev
...
Рейтинг: 0 / 0
Для любителей поворчать ...
    #39276330
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если не ошибаюсь, то нужно обратить внимание на код

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
                                                                /* Fast method */
                                                                int SStrLen=SearchLength;
                                                                const auto& Str = m_it_CurLine->GetString();
                                                                int LocalCurPos = m_it_CurLine->GetCurPos();
                                                                string NewStr(Str, 0, LocalCurPos);
                                                                NewStr += strReplaceStrCurrent;
                                                                NewStr.append(Str.cbegin() + LocalCurPos + SStrLen, Str.cend());
                                                                NewStr += m_it_CurLine->GetEOL();
                                                                AddUndoData(UNDO_EDIT, m_it_CurLine->GetString(), m_it_CurLine->GetEOL(), m_it_CurLine.Number(), m_it_CurLine->GetCurPos());
                                                                m_it_CurLine->SetString(NewStr);
                                                                m_it_CurLine->SetCurPos(LocalCurPos + static_cast<int>(strReplaceStrCurrent.size()));

                                                                if (EdOpt.SearchSelFound && !ReplaceMode)
                                                                {
                                                                        UnmarkBlock();
                                                                        BeginStreamMarking(CurPtr);
                                                                        CurPtr->Select(LocalCurPos, LocalCurPos + static_cast<int>(strReplaceStrCurrent.size()));
                                                                }

                                                                Change(ECTYPE_CHANGED, m_it_CurLine.Number());
                                                                TextChanged(1);



Так вот часто и густо будет выполняться функция append для добавления в NewStr анализируемой подстроки.
При этом не забывают об undo: AddUndoData( ... )

Представляете во что это выливается при работе с строкой 61253082 символов?

PS: Вообщем не хочу сильно критиковать этот код ... /нет ни желания ни времени/.
...
Рейтинг: 0 / 0
Для любителей поворчать ...
    #39276333
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012, вобщем можно сделать вывод что работа с текстовым файлом
в одну строку сопряжена с некоторыми неудобствами

Спасибо за анализ.

P.S. Если разом осушить бутылку с пометкой «яд»,
то рано или поздно, почти наверняка, почувствуешь легкое недомогание.
(с) Алиса
...
Рейтинг: 0 / 0
Для любителей поворчать ...
    #39276534
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отформатировал с indent. Получился файлик на 125 Мб.

Скриптик (копия примера со stackoverflow слегка переделанная).

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
import org.w3c.dom.Node;
import org.w3c.dom.bootstrap.DOMImplementationRegistry;
import org.w3c.dom.ls.DOMImplementationLS;
import org.w3c.dom.ls.LSSerializer;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.*;

public class XFormat3 {

    // TODO(Mayton): refactor with XMLStreamReader/Writer only
    public static void main(String[] args) throws IOException, SAXException, IllegalAccessException, InstantiationException, ParserConfigurationException, ClassNotFoundException {

            InputSource src = new InputSource(new FileInputStream("document.xml"));
            Node document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(src).getDocumentElement();
            //Boolean keepDeclaration = Boolean.valueOf(xml.startsWith("<?xml"));
            //May need this: System.setProperty(DOMImplementationRegistry.PROPERTY,"com.sun.org.apache.xerces.internal.dom.DOMImplementationSourceImpl");
            // TODO(mayton): Remove fucken DOM 
            DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance();
            DOMImplementationLS impl = (DOMImplementationLS) registry.getDOMImplementation("LS");
            LSSerializer writer = impl.createLSSerializer();
            writer.getDomConfig().setParameter("format-pretty-print", Boolean.TRUE); // Set this to true if the output needs to be beautified.
            writer.getDomConfig().setParameter("xml-declaration", true); // Set this to true if the declaration is needed to be outputted.
            // TODO(mayton): Remove fucken String serialization.
            String res = writer.writeToString(document);

            PrintWriter pw = new PrintWriter("document-formatted.xml");
            pw.print(res);
            pw.close();
    }
}
...
Рейтинг: 0 / 0
Для любителей поворчать ...
    #39276578
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonОтформатировал с indent. Получился файлик на 125 Мб. Далее сказанное относится не к вам.

"Другие программисты приводят примеры кода.
Но чем я хуже! xttps://www.youtube.com/watch?v=2ZkMyB7Jp4k
"
Сшас перекушу и выдам парочку своих вариантов на разных языках ...
...
Рейтинг: 0 / 0
Для любителей поворчать ...
    #39276616
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonСкриптик (копия примера со stackoverflow слегка переделанная).Просьба привести пример командной строки или скрипт для отработки этого кода.
...
Рейтинг: 0 / 0
Для любителей поворчать ...
    #39276619
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ох я ленивый как кот. Вбей сюда полные путя и скомпилируй. И все буеит чики-пики.
Код: java
1.
2.
InputSource src = new InputSource(new FileInputStream("document.xml"));
PrintWriter pw = new PrintWriter("document-formatted.xml");
...
Рейтинг: 0 / 0
Для любителей поворчать ...
    #39276646
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Программисты всех языков.
Покажите как работать с строкой размером 100MB!
"
PS: "Вы панике не поддавайтесь.
Спасайтесь!
Организованно."
...
Рейтинг: 0 / 0
Для любителей поворчать ...
    #39276654
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012PS: "Вы панике не поддавайтесь.
Спасайтесь!
Организованно."xttps://www.youtube.com/watch?v=PpGcsrsyBjQ
...
Рейтинг: 0 / 0
Для любителей поворчать ...
    #39276661
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012"Программисты всех языков.
Покажите как работать с строкой размером 100MB!
"
просто надо забыть что это строка и рассматривать ее как большой массив букав.
...
Рейтинг: 0 / 0
Для любителей поворчать ...
    #39276682
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир2012,

Давным-давно известно, что редактор FAR очень медленно работает с длинными строками.
Зачем продолжать грызть кактус и делать из этого глубокие выводы - я честно не понимаю.
...
Рейтинг: 0 / 0
Для любителей поворчать ...
    #39276689
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня Notepad++ повис на операции форматирования XML через плагин.
Я думаю что эта болезнь не только у FAR.

Помнится в прошлом году мы обсуждали "строку" длиной в терабайт и операцию unique.
...
Рейтинг: 0 / 0
Для любителей поворчать ...
    #39276698
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
Владимир2012Программисты всех языков.
Покажите как работать с строкой размером 100MB! 11610237

как-то так (осторожно, ПТ!)
...
Рейтинг: 0 / 0
Для любителей поворчать ...
    #39276703
Владимир2012
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schiЗачем продолжать грызть кактус и делать из этого глубокие выводы - я честно не понимаю.Имеется много чего "очевидного" как у вас так и у меня ... /и не всегда эти области пересекаются/.
Насчет выводов ...
Пока только один - "Век живи, век учись".

Вообщем то у меня нет цели как таковой кого-то принизить.
Просто все само собой получилось /см. 1-й message/.
До некоторой степени даже забавно /и не более того/.
...
Рейтинг: 0 / 0
19 сообщений из 44, страница 2 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Для любителей поворчать ...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]