Анна
Скинуть методичку по реверс-инжинирингу? :)
Vladislav
Она же сука в сдк, служба и должна работать. Но не хочет
Dr. Friedrich
Все уже слышали, наверное, мою историю про то, как мы прям в продакшен поставляли либу, которую пришлось прогонять через ildasm -> patch -> ilasm
Ayrat
или скинь ссыль
Dr. Friedrich
Щас найду и скину ок :)
Dr. Friedrich
я нет, жги
https://t.me/DotNetRuChat/130891
Ayrat
Нормас. я вообще бы не доверял способу IL -> C# -> IL, это по-моему сайдэффектов прибавит тонну из-за декомпилятора, как бы он не был офигенен проще сразу IL патчить
Dr. Friedrich
Там была либа от вендора bill acceptor, которая работала путём комммуникации через виртуальный COM-порт. И вот, короче, они там у себя впулили while (true) port.Read(buffer) — и это жрало CPU очень неплохо, потому что Read может вернуть 0 байт, если в буфере порта ничего нет. Пришлось на CIL туда вкурочивать Thread.Sleep(15), чтобы вендорная либа перестала жрать наш CPU на стендах.
Ayrat
но про тайминги я не понял
Ayrat
> похоже, хардварщики у себя забились на конкретные тайминги, и в перекомпилированном бинаре начинались race conditions.
Dr. Friedrich
но про тайминги я не понял
Про тайминги — гипотеза. Я решил, что после пересборки кода поменялось время выполнения некоторых участков, и из-за этого начали проявляться некие необнаруженные рейсы.
Dr. Friedrich
(пересборки с декомпилятором)
Dr. Friedrich
Пересборка через ilasm/ildasm таких побочных эффектов не давала (хотя либа всё равно довольно падучая была)
Ayrat
Хм, забавно, да. Забиваться на тайминг выполнения кода - это ядерно
Dr. Friedrich
Хм, забавно, да. Забиваться на тайминг выполнения кода - это ядерно
Я думаю, у них случайно вышло. Ну, скажем, старый компилятор генерировал очень медленные switch'и, и поэтому рейсы не случались. А новый их чуток оптимизировал — и попёрло.
Ayrat
Хардварщики. едрить
Dr. Friedrich
А у них там код и правда был довольно лихой, да.
Ayrat
детерминированность на уровне тактов
Dmitry
тут недалеко есть чатик по теориям категорий - я в него иногда почитываю и очень мало что понимаю. но видлно, что там товарищи обсуждают весьма интересные темы
Ayrat
на мафоверфлоу интереснее, поспорю
Ayrat
https://math.stackexchange.com/questions/tagged/category-theory
Анна
тут недалеко есть чатик по теориям категорий - я в него иногда почитываю и очень мало что понимаю. но видлно, что там товарищи обсуждают весьма интересные темы
я боюсь туда заходить. Когда туда скинули ссылку на наш уютный компиляторный чатик, в нём начался какой-то срач, простите
Ayrat
а ну-ка https://math.stackexchange.com/questions/2861015/why-is-this-universal-map-in-a-proof-of-the-co-yoneda-lemma-actually-natural
Анна
да, и чат теперь довольно дохл
Анна
Это тогда когда я вышел?
не знаю, там вроде не показывает, кто вышел
Romɑn
Ааа, ок.
Romɑn
Теперь компиляторный уютнее?
Анна
Теперь компиляторный уютнее?
> и чат теперь довольно дохл
Анна
Romɑn
:(
Dmitry
что-то стримить на ютуб какое-то неожиданно замороченное занятие - какие-то ивенты создавать (или нет?), потом второе видео перезаписывает первое... прям неожиданно - смотрю на этих всех детей стримеров и как-то неловко даже...
Dmitry
а уж как заморочиться пришлось, чтоб хоть как-то приличный звук пустить (с макбука) это заслуживает отдельного обзора
Romɑn
Ютубер в чати!!
Pavel
Она же сука в сдк, служба и должна работать. Но не хочет
Так если служба в сдк, то может и символы можно скачать?
Ayrat
ппц, дотнетру чат какая-то помойка
Ayrat
это что-то на уровне тостера от ТМ
Dr. Friedrich
ппц, дотнетру чат какая-то помойка
Есть ещё @pro_net, там мы чуть строже модерируем.
Vladislav
ппц, дотнетру чат какая-то помойка
ну он свободный достаточно
Vladislav
Боже
Vladislav
индусы
Vladislav
if (invReqDS.getQuantity() > 0.0) invReqDS.setQuantity(invReqDS.getQuantity() * -1.0);
Vladislav
зачем
Dr. Friedrich
Это жава?
Dr. Friedrich
Блин, серьёзно?
Vladislav
я не шучу)
Dr. Friedrich
Хм, а и правда, зачем такой код?
Dr. Friedrich
Отрицательный квантити получить?
Vladislav
Хм, а и правда, зачем такой код?
это код корректировки количества товара на складе
Vladislav
самое смешное
Dr. Friedrich
Мне не нравятся вот эти вот мутации. Явно получили от кого-то дтошку и какие-то гадости с ней делаем.
Vladislav
invReqDS.setQuantity(Math.Abs(invReqDS.getQuantity())); они потом исправляются
Vladislav
Dr. Friedrich
Я вот отправил запрос, например — прошу списать со склада два стула. Этот код меняет мой запрос и отправляет дальше, делает свои дела, а я потом смотрю в свой объект запроса — у меня там уже минус два стула стало. Форменный кошмар!
Vladislav
Мне не нравятся вот эти вот мутации. Явно получили от кого-то дтошку и какие-то гадости с ней делаем.
Там кодовой базе лет 15 если я не ошибаюсь. На дне турбо легаси лежит
Vladislav
Сверху смузи и DI
Dr. Friedrich
Это в том же флоу?
Vladislav
Vladislav
Да
Vladislav
Внутри себя склад общается посредством строк свободного формата
Vladislav
Точнее скорее там как-то на пробелах завязано все
Ayrat
Стойте. Никого не удивляет J#?
Ayrat
Обычное такое дело, да?
Vladislav
Так, я добрался до построения sql конкатенацией и стрингбилдером
Vladislav
Dr. Friedrich
Стойте. Никого не удивляет J#?
Мы просто уже на прошлой неделе удивлялись этому.
Vladislav
Vladislav
пруфы как говорится
Vladislav
блять
Vladislav
ору