Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 51 52 53 54 55 56 57 58 59 [60]
 Re: Топик "как я лажанулся"  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 32405

29.04.2021 15:34, softwarer пишет:
> Этот вопрос стоило бы задать КР-у. В те времена, когда они специфицировали язык, стремясь к минимальности, им не удалось предусмотреть развитие вычислительной техники и понять, что в хороший стиль программирования войдут подобные излишества. Собственно, им даже определить однобайтовый char не казалось неудачным решением.

в те времена CHAR был 7-битным

Posted via ActualForum NNTP Server 1.5

29 апр 21, 15:50    [22316438]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 65951
Блог
Мимопроходящий
в те времена CHAR был 7-битным

Угу. "8 бит хватит всем" (тм)
29 апр 21, 16:40    [22316464]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
ъъъъъ
Member

Откуда:
Сообщений: 2125
alekcvp
Зачем так делать?..

В сях нет типа byte. Есть 8-битный тип char и unsigned char.

В C++ 17 его (имя) наконец определили в std библиотеке как
enum class byte : unsigned char {} ;

Но к этому времени люди наобъявляли себе кому что нравится, и переделывать облом.
29 апр 21, 16:54    [22316472]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
alekcvp
Member

Откуда:
Сообщений: 2878
ъъъъъ

В сях нет типа byte. Есть 8-битный тип char и unsigned char.

Гениально, "символ без знака" 😃
29 апр 21, 18:11    [22316509]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 65951
Блог
alekcvp
ъъъъъ

В сях нет типа byte. Есть 8-битный тип char и unsigned char.

Гениально, "символ без знака" 😃

Подумаешь, в Си есть ещё просто тип unsigned. Настолько без знака, что даже без символа
29 апр 21, 19:01    [22316521]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 65951
Блог
softwarer
Подумаешь, в Си есть ещё просто тип unsigned. Настолько без знака, что даже без символа

А если вспомнить ещё получше, то в Си есть ещё просто тип. Даже без unsigned.
29 апр 21, 19:27    [22316532]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 65951
Блог
Тоже забавно влетел. Исходные данные: есть объект с кучей свойств, 95% из которых были реализованы read/write поле. По некоторым причинам свойствам потребовалась общая стандартная реализация, поэтому они стали индексированными, 95% использует стандартные методы доступа, а редкие исключения - свои особые реализации, делающие нужную логику, после чего вызывающие стандартную. И было свойство, ну например

public
  property XXX: variant index 666 read GetStd write SetStd;

ему потребовалась нестандартная реализация. Ну нет проблем:

protected
  procedure SetXXX(var Index: integer; const NewValue: variant);
public
  property XXX: variant index 666 read GetStd write SetXXX;

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

mov dx, ax
mov dx, [dx]

при том, что после первой строки в dx значение 666. И тут я смотрю внимательно на то, что написал, и до меня доходит...

Сообщение было отредактировано: 19 май 21, 02:41
19 май 21, 02:47    [22323905]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
DmSer
Member

Откуда: Пенза
Сообщений: 1376
У клиента 15 рабочих мест. База данных на Firebird 2.5.8 размером 2ГБ.
На одном из рабочих мест по ошибке запускалось резервирование базы данных с интервалом 30 секунд.
Справочник учётных записей открывается 60 секунд (вместо нормальных 5 секунд с учётом пинга 20 мс).
Запуск обмена с контроллером занимает 100 секунд вместо положенных 2х секунд.
Работают в таком режиме уже почти год.
Только сегодня стали разбираться и обнаружили.
19 май 21, 14:22    [22324177]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Softologic
Member

Откуда: Питер
Сообщений: 294
DmSer
У клиента 15 рабочих мест. База данных на Firebird 2.5.8 размером 2ГБ.
На одном из рабочих мест по ошибке запускалось резервирование базы данных с интервалом 30 секунд.
Справочник учётных записей открывается 60 секунд (вместо нормальных 5 секунд с учётом пинга 20 мс).
Запуск обмена с контроллером занимает 100 секунд вместо положенных 2х секунд.
Работают в таком режиме уже почти год.
Только сегодня стали разбираться и обнаружили.

Жесть какая...
19 май 21, 14:53    [22324219]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
ъъъъъ
Member

Откуда:
Сообщений: 2125
Клиенты - они терпеливые.
У одного нашего, базу "временно" установили на настольном ПК, хуже того - на моноблоке.
Всё и работает.
Недавно попросили кое-что в отчетах подправить. Дайте, если не далко, бэкап базы, прошу, чтобы с живыми данными тренироваться. А мы не делаем бэкапы, говорят, у моноблока сломался монитор - дисплей не кажет, usb порты и раньше не работали, а по сети мы не умеем...
Давайте перенесем на нормальный комп - а, не, работает и так, нужно заявку писать в департамент автоматизации, это долго...
Несколько лет так живут. И не бедные, всегда платят, а что-то из железок для себе - очень трудно...
19 май 21, 15:42    [22324255]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Fr0sT-Brutal
Member

Откуда:
Сообщений: 755
softwarer
Тоже забавно влетел.

Число 666 негативно испугало компилятор? )) Признаться, так и не увидел проблемы
19 май 21, 16:47    [22324298]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 65951
Блог
Fr0sT-Brutal
softwarer
Тоже забавно влетел.

Число 666 негативно испугало компилятор? )) Признаться, так и не увидел проблемы

Число 666 написано для пущего антуража. В оригинале 15. Я вот тоже не сразу увидел проблему. Только когда задумался, какого хрена выполняется по сути

mov dx, 666
mov dx, [dx]
19 май 21, 16:57    [22324308]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Kazantsev Alexey
Member

Откуда:
Сообщений: 5115
Fr0sT-Brutal
Признаться, так и не увидел проблемы

Индекс по ссылке. История о том, как лажанулся компилятор.
19 май 21, 17:30    [22324333]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Fr0sT-Brutal
Member

Откуда:
Сообщений: 755
Ааа, var Index
20 май 21, 10:21    [22324609]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
DmSer
Member

Откуда: Пенза
Сообщений: 1376
Используется TIdHTTPClient + TLS + режим keep-alive (чтобы каждый раз не тратить время на TLS).
На сервере возникли тормоза (возможно винда решила обновиться). HTTP-сервер отвечал на запросы лишь через 5-10 минут.
У IdHTTPClient таймаут ответа 10 сек. Только мало от этого толку. Один хрен приходят ответы, которые он ждал 5 минут назад.
В итоге ты думаешь, что тебе пришёл ответ на твой GET-запрос, а нифига! Пришёл ответ, который ты уже и не ждёшь!
Ещё хорошо, если старый ответ пришёл перед новым GET-запросом, тогда можно заранее очистить приёмный буфер. Но иногда старый ответ (5 минутной давности) приходит после нового GET-запроса.
В общем, не понятно, как все-таки правильно работать с keep-alive. Какой-то трэш получается! Придумали отправлять RequestID в каждом GET-запросе, а в ответе его же возвращать. Так хоть какой-то контроль.
26 май 21, 09:49    [22327251]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Дегтярев Евгений
Member

Откуда: Барнаул
Сообщений: 2022
DmSer,

не в теме, а на ком лежит ответственность за коннект, на библиотеке или вызывающем, но коннект надо закрывать
26 май 21, 10:45    [22327301]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Fr0sT-Brutal
Member

Откуда:
Сообщений: 755
DmSer
Используется TIdHTTPClient + TLS + режим keep-alive (чтобы каждый раз не тратить время на TLS).
На сервере возникли тормоза (возможно винда решила обновиться). HTTP-сервер отвечал на запросы лишь через 5-10 минут.
У IdHTTPClient таймаут ответа 10 сек. Только мало от этого толку. Один хрен приходят ответы, которые он ждал 5 минут назад.
В итоге ты думаешь, что тебе пришёл ответ на твой GET-запрос, а нифига! Пришёл ответ, который ты уже и не ждёшь!
Ещё хорошо, если старый ответ пришёл перед новым GET-запросом, тогда можно заранее очистить приёмный буфер. Но иногда старый ответ (5 минутной давности) приходит после нового GET-запроса.
В общем, не понятно, как все-таки правильно работать с keep-alive. Какой-то трэш получается! Придумали отправлять RequestID в каждом GET-запросе, а в ответе его же возвращать. Так хоть какой-то контроль.

Ну, это странно изначально. Если у вас жесткий запрос-ответ, то какого бодуна второй запрос шлется, не дождавшись ответа от первого? А если мультиплекс, то как вы вообще рассчитывали отделять один ответ от другого?
26 май 21, 13:57    [22327453]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
DmSer
Member

Откуда: Пенза
Сообщений: 1376
Обычный запрос/ответ. Обычный таймаут ожидания ответа 10 сек. О причинах использования keep-alive я написал. Без него на каждый запрос уходит дополнительные 2 секунды (из-за TLS 1.2)
26 май 21, 15:41    [22327528]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Дегтярев Евгений
Member

Откуда: Барнаул
Сообщений: 2022
повторюсь, забудь про такой коннект, создавай новый
26 май 21, 15:54    [22327535]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
Fr0sT-Brutal
Member

Откуда:
Сообщений: 755
DmSer
Обычный запрос/ответ. Обычный таймаут ожидания ответа 10 сек. О причинах использования keep-alive я написал. Без него на каждый запрос уходит дополнительные 2 секунды (из-за TLS 1.2)

Так у тебя логика неверная, исходя из той инфы, что ты описал. Если ответа нет, то смысл следующий запрос слать? Сервер все равно в задумчивости
26 май 21, 16:04    [22327541]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
DmSer
Member

Откуда: Пенза
Сообщений: 1376
Дегтярев Евгений
повторюсь, забудь про такой коннект, создавай новый


Я понял. Хороший вариант. Нужно было сразу так и делать!
26 май 21, 16:40    [22327561]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
ъъъъъ
Member

Откуда:
Сообщений: 2125
Дегтярев Евгений
повторюсь, забудь про такой коннект, создавай новый

Клиентское API протокола http управляет tcp коннектом?
26 май 21, 16:52    [22327568]     Ответить | Цитировать Сообщить модератору
 Re: Топик "как я лажанулся"  [new]
DmSer
Member

Откуда: Пенза
Сообщений: 1376
ъъъъъ
Дегтярев Евгений
повторюсь, забудь про такой коннект, создавай новый

Клиентское API протокола http управляет tcp коннектом?


обычный TIdHTTPClient. Там вроде нет проблем с дисконнектом.
26 май 21, 16:55    [22327570]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 51 52 53 54 55 56 57 58 59 [60]
Все форумы / Delphi Ответить