Size: a a a

2020 May 05

SB

Sergey Bodrov in Delphi & Lazarus
Делал оптимизации, чтобы с тысячами подключений IP работало. И оно работает, но на больших нагрузках из-за особенностей опроса сокетов с нулевым таймаутом (в Synapse) скорость приема может катастрофически падать. Как это исправить знаю, но только для одного подключения, а на тысячах лучше LNet использовать, там это лучше реализовано.
источник

SB

Sergey Bodrov in Delphi & Lazarus
Еще недостаточно проработано управление каналом при неустойчивом TCP соединении, когда удаленная сторона тупит с подтверждениями, системный буфер отправки переполняется и соединение "зависает".
источник

SB

Sergey Bodrov in Delphi & Lazarus
Проблемы проявлялись в основном на винде. На линуксах оно лучше работает, но там есть косяки с Serial, тоже в SynaSer.
источник

DB

Dmitry Belkevich in Delphi & Lazarus
с надежностью передачи бывают сложности, это да
источник

DB

Dmitry Belkevich in Delphi & Lazarus
я пока допилил трубы, то итераций штук 5 прошло. потом стало работать наконец без пропусков
источник

SB

Sergey Bodrov in Delphi & Lazarus
Для FPC есть утилиты для мониторинга менеджера памяти? Например, в FastMM есть компонент мониторинга, можно глянуть карту памяти, фрагментацию, статистику. А то оставил на ночь программу, собранную на Лазаре 2.0.8, а там ошибка выделения памяти выскочила, 1024 байта не смогла выделить, хотя по монитору ресурсов 4 Гб свободно и программа использует всего 140 Мб.
источник

SB

Sergey Bodrov in Delphi & Lazarus
Хм, у меня же GlobalAlloc() используется вместо GetMem(), значит это винда пожадничала.
источник

DB

Dmitry Belkevich in Delphi & Lazarus
you never know with microsoft
источник

SB

Sergey Bodrov in Delphi & Lazarus
Реально это мой косяк, я когда портировал на Андроид, то поставил неудачно $ifdef так что для андроида используется стандартный GetMem(), а для остальных GlobalAlloc(). Оно в принципе должно было работать (и работало) хоть и медленне, но почему-то именно сегодня ночью винда не дала 1024 байта.
источник

SB

Sergey Bodrov in Delphi & Lazarus
Там GlobalAlloc() использовался совершенно варварским путем, как GlobalAllocPtr(GMEM_MOVEABLE), для очереди IP пакетов.
источник

SB

Sergey Bodrov in Delphi & Lazarus
Фишка в том, что GlobalAlloc(GMEM_MOVEABLE) возвращает не указатель, а хендл, который действителен во всей системе, между разных приложений. Чтобы из хендла получить Pointer нужно сделать GlobalLock() этого хендла. GlobalAllocPtr() создает хендл и сразу его лочит. Ну и получается, я наплодил этих хедлов, да еще и залоченых.
источник

DB

Dmitry Belkevich in Delphi & Lazarus
ложечки найдутся, но осадочек останется )
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Alexey Shumkin
От статьи...
"Когда я читаю, что создание любого приложения с create-react-app сразу означает 4304 директории с 28678 файлами в них, у меня тоже возникает вопрос, не свернули ли мы куда-то не туда.":
https://habr.com/ru/company/jugru/blog/493178/
источник

VO

Vitaly Orz. in Delphi & Lazarus
Доброго времени суток всем труженикам ИТ
источник

VO

Vitaly Orz. in Delphi & Lazarus
Кто нибудь имел опыт Работы с группой компонентов REST
источник

VO

Vitaly Orz. in Delphi & Lazarus
Нужно Яндекс диск оседлать.
источник

VO

Vitaly Orz. in Delphi & Lazarus
Опыта мало у меня хотелось бы пример
источник

VO

Vitaly Orz. in Delphi & Lazarus
С авторизацией более менее разобрался.  Вопрос именно в получении списка файлов  и скачивании
источник

DB

Dmitry Belkevich in Delphi & Lazarus
Vitaly Orz.
Нужно Яндекс диск оседлать.
WebDAV может поможет? мы как-то юзали, работало
источник

VO

Vitaly Orz. in Delphi & Lazarus
Скиньте если не сложно ссылку почитать
источник