Size: a a a

2020 February 10

ГМ

Геннадий Малинин in Delphi & Lazarus
Sergey Bodrov
Важно не название, а привлекательность решения для продакшена. На первый взгляд, простые снаружи решения лучше, и не важно что там "под капотом". Но ситуация по ходу пьесы может измениться, потребуется все же лазить "под капот", и тогда окажется, что под капотом все плохо и это не лечится. И что более сложные решения на самом деле проще в долгосрочной перспективе, но кто ж знал..
++
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Много задач, которые я раньше решал в более поздних версиях или с более низким уровнем знаний сейчас решаются более коротким и практичным кодом
источник

AS

Alexey Shumkin in Delphi & Lazarus
Sergey Bodrov
Важно не название, а привлекательность решения для продакшена. На первый взгляд, простые снаружи решения лучше, и не важно что там "под капотом". Но ситуация по ходу пьесы может измениться, потребуется все же лазить "под капот", и тогда окажется, что под капотом все плохо и это не лечится. И что более сложные решения на самом деле проще в долгосрочной перспективе, но кто ж знал..
Мне кажется, я тут, вроде, и понимаю, но , вроде, не понимаю, что ты хотел сказать 😁
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Библиотеки тоже на месте не стоят, всё улучшается
источник

SB

Sergey Bodrov in Delphi & Lazarus
На примере того же ZIP - мне вот понадобилось генерировать огромный (гигабайты) XML и сразу "на лету" его сжимать. Если это делать через временный файл, то это займет намного больше времени и ресурсов. Многие простые компоненты для ZIP такое не умеют.
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Интересный опыт. Есть ли какие-то поточные упаковщики?
источник

SB

Sergey Bodrov in Delphi & Lazarus
Поначалу решение с временным файлом было вполне достаточным. Но потом пришлось многое переделать, иначе формирование результата занимало больше часа времени.
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Нам вот тоже актуально
источник

SB

Sergey Bodrov in Delphi & Lazarus
Dmitry Belkevich
Интересный опыт. Есть ли какие-то поточные упаковщики?
Родной фрипаскальный TZipper поточный, но делается это довольно хитрым способом, через обработчики событий. Я сделал адаптер для Delphi, чтобы можно было использовать популярные библиотеки ZIP точно так же, как в FPC. Мне это понадобилось для кросс-IDE, и там для FPC уже был рабочий вариант.
источник

SB

Sergey Bodrov in Delphi & Lazarus
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Ок, благодарю, гляну
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
А дефолтное сжатие потока слабо сжимает?
источник

AS

Alexey Shumkin in Delphi & Lazarus
Sergey Bodrov
На примере того же ZIP - мне вот понадобилось генерировать огромный (гигабайты) XML и сразу "на лету" его сжимать. Если это делать через временный файл, то это займет намного больше времени и ресурсов. Многие простые компоненты для ZIP такое не умеют.
источник

SB

Sergey Bodrov in Delphi & Lazarus
Геннадий Малинин
А дефолтное сжатие потока слабо сжимает?
Смотря что имеется в виду под дефолтным для конкретных данных. Для текста одно хорошо, для картинок другое, для звука третье. Если в качестве дефолта смотреть "стандартный" ZIP, то он достаточно простой в принципе, по первым килобайтам данных составляется "словарь" из битовых "слов", сортируется по повторяемости и дальше в поток пишутся индексы этих слов в словаре. Чем чаще слово, тем короче у него индекс.
источник

AS

Alexey Shumkin in Delphi & Lazarus
Sergey Bodrov
На примере того же ZIP - мне вот понадобилось генерировать огромный (гигабайты) XML и сразу "на лету" его сжимать. Если это делать через временный файл, то это займет намного больше времени и ресурсов. Многие простые компоненты для ZIP такое не умеют.
Я надеюсь, XML генерится SAX-подходом?
источник

SB

Sergey Bodrov in Delphi & Lazarus
Alexey Shumkin
Я надеюсь, XML генерится SAX-подходом?
В целом да, но есть нюансы.
источник

SB

Sergey Bodrov in Delphi & Lazarus
Вообще для манипуляций над огромными объемами данных, которые физически не влезут в память, есть функционал File mapping и файлы с атрибутом FILE_ATTRIBUTE_TEMPORARY.
источник

SB

Sergey Bodrov in Delphi & Lazarus
Но ни в дельфи, ни в FPC он стандартно не реализован, насколько я знаю.
источник

N

Nik in Delphi & Lazarus
Есть пример?
источник

SB

Sergey Bodrov in Delphi & Lazarus
источник