Jan 27 13:31
Проблема в том, что нет await у shoppingCartService.AddToCart? Вообще непонятно, как эти два сервиса завязаны с вашим, у них что, один и тот же контекс с вами?
Jan 27 13:31
Покажите конкретный кусок кода, где возникает исключение. От момента начала использования контекста.
 
Jan 11 00:15
@MBo Ну, надо пробовать, может и норм будет, учитывая, что проверять нужно будет не все эти числа, а до <= введенного числа. Хотя всё-равно 2с выглядит нереально для миллиона таких тестов.
Jan 11 00:15
А точно наборов до миллиона? Просто даже взять миллион рандомных чисел с помощью ГСЧ - уже вылезет за рамки отведённого времени, например. А ведь ещё нужно проверить успеть каждое число.
Jan 11 00:15
А по сути да, задача хитрая. Тут явно нужен один там местный любитель математики. ) Явно какая-то хитрость есть. Стоп, про 3 я наврал, от 2 надо. "Хотя бы 2" - это не меньше 2. Блин. Сорри. Меня смутила ваша проверка на n == 2.
Jan 11 00:15
Так, а почему if divider * 2 > n:? Явно же нужно проверять divider * divider > n. Ну и могу ещё предложить кешировать результаты в словарь для скорости. Или числа во вводе точно не повторяются? Да, и искать начинайте от 3, а не от 2, согласно условию, если я правильно всё понял.
Jan 11 00:15
@pythonniy_chainik Правила такие. Задача - текстом, код - текстом. Ну а по сути - вы должны предложить своё решение, пусть и не оптимальное, прежде чем просить помощи. Чтобы было видно, что вы "не халявщик, а партнёр".
Jan 11 00:15
Что-то вывод явно со сдвигом приведён, его нужно на одну ячейку ниже опустить. Ну а так что. 1) Возводите число в квадрат 2) Добавляете к этому квадрату число 1 3) Раскладываете получившееся число на два множителя, причём тут явно нужно идти от меньших чисел в попытках разложения (и до корня числа) - чем больше разница между множителями, тем больше будет периметр. Ну и всё. Первые два действия вы явно можете и сами сделать, а про разложение числа на множители тут было 100500 вопросов и ответов, поищите.
 
Jan 9 16:10
@Harry Ну да, это дубль. scanf запихивает не подходящий ему \n обратно в поток ввода и его нужно оттуда как-то чистить.
Jan 9 16:10
А вы эту программу как вообще запускаете, в какой IDE или из командной строки или как вообще?
Jan 9 16:10
@AlexGlebe Обычно всё-таки во всех языках логические операторы "ленивые" и выполняются слева направо, на это много где логика завязана. Не уверен конкретно про C, но обычно порядок проверок фиксирован поэтому, иначе придётся слишком много лишних проверок придётся делать, если не полагаться на именно такой порядок. Ну или делать вложенные if-ы придётся, что выглядит не так уже компактно.
Jan 9 16:10
Ввод в буфер прекрасно работает, перевод строки в буфер не попадает. Вот почему дальше scanf не работает нормально - это я уже не знаю.
 
Nov 27, 2024 09:27
@SwaD Про тесты у меня, кстати, тоже была идея, но я её забыл написать. Возможно, это вообще самый простой способ проверить, что код не поменялся. Модификаций наверное нужно будет столько же, сколько тестов, если тесты хорошо подобраны.
Nov 27, 2024 09:27
@avp Контрольная сумма очень даже годный вариант. Можно и какой-то хэш от самой суммы возвращать, чтобы его можно было проверить )
Nov 27, 2024 09:27
Вот ведь пытливый ум. Так, но если искажение может быть любое, то во многих случаях программа просто не скомпилируется. И, мне кажется, мы с этим ничего сделать не можем. Или нужно бороться только с такими искажениями, которые оставляют программу исполнимой? В этом случае скорее всего кроме знака действия вряд ли что-то ещё можно изменить. А это уже можно будет как-то задублировать, проверить.
 
Nov 21, 2024 22:27
@AlexeyTrukhanov Kafka - для крупных компаний и высоконагруженных сервисов. Миллионы сообщений в секунду - легко. RabbitMQ попроще. Есть такая штука как ZeroMQ, но она вообще без хранилища, просто "connecting people" (ну то есть сервисы), как говорится. Ну это уже скорее замена API, наверное тут я её зря упомянул вообще.
Nov 21, 2024 22:27
@AlexeyTrukhanov Максимально неудобная схема )) Если нужно максимально быстро писать что-то и не ждать результата, то оптимально использовать брокер сообщений. А из него уже писать в базу, ну либо прямо из него данные и брать. Иначе всё же БД, да. Через файлы - это излишнее усложнение задачи.
Nov 21, 2024 22:27
Кстати, да. Простой какой-нибудь брокер сообщений - это тема. Много места и ресурсов не ест и не нужно думать, сформировался файл или нет. Что пришло - то и читаем. Правда, тут бинарные файлы, ну, если они небольшие, то можно их в текстовый вид запаковать.
Nov 21, 2024 22:27
В принципе да. Я думаю исключение + sleep будет оптимально. Не городить лишний сущностей и оверхед небольшой.
Nov 21, 2024 22:27
@AlexeyTrukhanov Кажутся то простыми, да. А потом начинается - скрипт застрелили в процессе работы, .lock файл остался, из-за него файл не хочет читаться, нужно чистить старые, не актуальные .lock файлы (как вариант - удалять в начале работы скрипта). И т.д. и т.п. Чем больше сущностей - тем больше возни с разгребанием всех возможных сценариев, когда что-то пошло не так. )
Nov 21, 2024 22:27
@strawdog Кстати, да, может смотреть хотя бы, что время модификации файла изменилось? Есть ещё древний какой-то watchdog, можно на on_modified прикрутить habr.com/ru/articles/140649
Nov 21, 2024 22:27
@AlexeyTrukhanov Все варианты имеют свои минусы. Наверное, ловить исключения будет самый простой способ из всех. Я бы только хотя бы небольшой sleep добавил в цикл всё-таки. )
Nov 21, 2024 22:27
Можно так, можно создавать некий пустой файл-компаньон с другим расширением, который будет сообщать, что теперь тот файл можно читать. Можно создавать файл в режиме рид-онли и при чтении сначала проверять флаги файла. Если рид онли, то не трогаем. Вариантов можно вагон разных придумать.
 
Nov 1, 2024 14:30
Так, ну в порядке убывания вы сделали. А в порядке возрастания, если A < B, где ветка кода? )
Nov 1, 2024 14:30
Да где код то?! )))
 
Nov 1, 2024 12:28
Добавьте в код запись в лог всех действий, только так можно понять, что и как на самом деле происходит.
 
Nov 1, 2024 09:09
"это полный код Trace, за исключением KeyboardInterrupt" да что ж вы какой упорный. Проще было давно уже полностью скопировать в вопрос. KeyboardInterrupt - это тоже часть трейса.
Nov 1, 2024 09:09
@ПростойЧеловек Вот и предоставьте в вопросе полный стек-трейс, как есть, ничего не вырезая из него. Почему мы вас должны уговаривать?
Nov 1, 2024 09:09
Проголосую за переоткрытие только когда будет чёткое описание - что такое "не происходит выполнение команды". Код висит? Код выводит ошибку? Что происходит то? Из описания непонятно. Ну и трейс должен быть полный, с текстом ошибки, чтобы ситуация была понятной опять же.
Nov 1, 2024 09:09
Так у вас скрипт висит на строке data, _ = server_socket.recvfrom(1024) и вы его прерываете с клавиатуры или что происходит то? Из текущего описания проблемы не очень понятно.
Nov 1, 2024 09:09
А пробовали на этом Linux зайти телнетом на 192.168.0.2:9999, что-то там выводится в ответ? А то может там что-то ждёт сервис, чтобы ему написали сначала.
 
Oct 22, 2024 17:52
@andreymal Судя по page += 0.2; это не целое и тогда page % 1 != 0 это проверка на то, что есть дробная часть. Но вообще, конечно, не целые страницы - это интересная концепция. А учитывая приколы чисел с плавающей точкой, такие проверки это весело вообще.
 
Oct 11, 2024 09:32
@rotabor Подозреваю, что не все занимаются рефакторингом и пишут короткие методы. Возможно, это и правда объясняет их нелюбовь к var.
Oct 11, 2024 09:32
@Faraday Повторюсь - я стараюсь рефакторить код на небольшие и довольно универсальные методы. Поэтому участки кода, где используется var - они маленькие и очевидные. Тем более, сейчас в C# есть более удобный синтаксис чтобы не задваивать типизацию при инициализации объектов Type variable = new();, естественно для инициализации объектов я предпочитаю его, а не var variable = new Type();, при инициализации var наоборот мешает нормально видеть тип, особенно в длинных строках, тут я согласен.
Oct 11, 2024 09:32
@Faraday Ну как. Я же опять же не тут на месте делаю обработку, я для этого вызываю какой-то метод. Который может быть шаблонным, например. У меня используется DI само собой, код отрефакторен на небольшого размера функции. Поэтому сам код выглядит примерно так: var data = repository.GetData(); foreach (var item in data) { processor.Process(item}; } Зачем в данном коде нужно видеть детали типизации, ну вот реально - зачем, что они вам дадут? Если что-то и сломается, то не в этом коде, а в тех методах, которые он вызывает.
Oct 11, 2024 09:32
@АлексейШиманский Ну, тут не то, чтобы совсем динамическая типизация... Тут скорее речь про скрытие деталей реализации. )
Oct 11, 2024 09:32
@aepot А я считаю, что var - это прекрасно. Например, я получаю из какого-то сервиса коллекцию данных и как-то её поэлементно обрабатываю. Мне совершенно пофигу какого типа эти элементы, и что там за коллекция. Я хочу максимально от этого всего абстрагироваться и var позволяет мне это сделать. Да, есть шаблонные методы, да есть IEnumerable, но зачем загружать код лишними подробностями? Я получаю коллекцию, я её обрабатываю. Что это коллекция и так будет понятно из кода и названия переменной. Зачем мне лишний раз видеть тип, особенно если он сложный какой-нибудь, "многоэтажный"?
 
Oct 10, 2024 22:38
@StanislavVolodarskiy Но ведь "запрещено" и UB - это не синонимы.
 
Sep 4, 2024 17:15
Я бы посмотрел, как в Kerberos всё устроено. Там чёрт ногу сломит, но зато безопасность там на уровне.
 
Sep 3, 2024 17:04
Кстати, добавьте ещё пример данных в вопрос.
Sep 3, 2024 17:04
@Александр А, так задачка простая, теперь понятно, почему такой код. А что касается памяти, ещё раз - на что она уходит то? На список fences? Какого он примерно размера и какой максимальной длины может быть забор? Если память уходит только на хранение fences, я бы просто запихал эти данные в Numpy массив минимального типа который такие числа умеет хранить. Ну или другой вариант, если массив уже где-то хранится и вы имеете к нему доступ с обоих концов, то можно не копировать его, а просто брать элементы с концов и двигаться внутрь, откидывая края, когда они хуже. Ну, примерно.
Sep 3, 2024 17:04
@Александр Без рисунка всё-равно ничего непонятно. Нарисуйте хоть в паинте что-то поясняющее )
Sep 3, 2024 17:04
@rotabor А, блин, вот это "можно не использовать длину полностью" я не заметил. Хрен знает, что это значит ))
Sep 3, 2024 17:04
@rotabor Да всё понятно. Есть доски шириной 1 и разной длины. Нужно посчитать, какой максимальной площади можно из них забор сделать. Забор должен быть тоже прямоугольный и целиком заполненный, без прогалов.
Sep 3, 2024 17:04
А что тут по памяти можно оптимизировать? У вас тут память ничего кроме списка прямоугольников (заборов) не использует. Ну и ещё несколько временных переменных, их можно вообще в расчёт не брать. А без списка с данными вы же не можете задачу решать.
 
Aug 22, 2024 08:48
@StanislavVolodarskiy Я всё пытаюсь придумать алгоритм с перебором, но самих комбинаций получается слишком много, даже если просто буквы в частотном словаре на несколько мест вверх-вниз двигать. Хочется формализовать как-то алгоритм.
Aug 22, 2024 08:48
@StanislavVolodarskiy Вы таки были правы насчёт пробелов. А дальше нужно было с буквосочетаниями тему добивать, как-то видимо. )
Aug 22, 2024 08:48
Да, с таким преобразованием сходится. Непонятно только, зачем в исходном тексте пробелы, видимо только чтобы запутать, они в совершенно произвольных местах стоят, их нужно просто выкинуть предварительно. Непонятно, почему вы тогда ответ удалили. Дополните его пояснениями из комментариев с таблицей перекодировки и как к ней можно прийти прямо в самом ответе и будет нормальный ответ, кому-то даже полезный.
Aug 22, 2024 08:48
Либо это другой фрагмент расшифрован, чем который вы в вопросе привели, либо я чего-то не понимаю. Вам дали таблицу преобразования, какие буквы в какие переходят? У меня как-то не сходится ничего. Я могу видеть ваш удалённый ответ, если что и комментарии к нему.
Aug 22, 2024 08:48
Вот кстати ссылка по теме. Там и частоты сочетаний букв есть intuit.ru/studies/courses/13837/1234/lecture/31196?page=4