• Как выбрать активную цену и предыдущую?

    trapwalker
    @trapwalker
    Андрей Мохов, а почему просто не ограничить даты условиями вида:
    active_from <= :qdate
    AND (
      active_to IS NULL 
      OR active_to > :qdate
    )

    По товару можно добавить группировку, а какую вы будете использовать аггрегирующую функцию по цене - не важно, потому что интервалы. наверно, не пересекаются.
  • Как выбрать активную цену и предыдущую?

    trapwalker
    @trapwalker
    . Андрей Мохов, ну, ок, написал. Запрос, в общем-то. тривиальный. В чем проблема была?
    Вы бы не ленились лучше и подготовили SQL с тестовыми данными для тестирования запроса и показали бы свои наработки, тут бы вас и исправили. А так вон в абьюз уже два рапорта улетело за задание.
  • Как выбрать активную цену и предыдущую?

    trapwalker
    @trapwalker
    Андрей Мохов, о, я и не такие запросы писал. Вы меня на понт не берите. Если уже пытались решить задачу -- приводите пример, который у вас не заработал.
  • Почему Коммутатор D-Link DGS-1210-52MP примерно через 1 сутки валит всю сеть?

    trapwalker
    @trapwalker
    В вашу задачу даже не вникал, но был у меня случай однажды, когда легла вся сеть университета. Наши сервреа в ней получали на внешние интерфейсы какой-то бешеный внутренний трафик, и всё выглядело как какая-то DDoS атака внутри сети. Под огромной нагрузкой каких-то сервисных пакетов не могли работать внутренние сервисы универа.
    Искать злодея решили просто: делить сеть на части и смотреть где остаётся "пожар". Эпопея длилась неколько часов (это давно было, еще до централлизованно программно конфигурируемых цисок).
    Короче, выяснилось в конце, что атака идёт из кабинета, где ремонт, вынесена вся мебель и покрыт свежим лаком паркет.
    Оказывается излишне заботливый маляр заканчивая покраску приспособил болтающийся хвост витой пары, к которой был раньше подключен комп, вторым концом в тупой старый свич или хаб. Вот в этой петелечке как в том синхрофазотроне с лютой скоростью размножались какие-то сервисные пакеты, бродкастом разлетающиеся в сети.
    Так у нас простой рабочий организовал массированную ддос-атаку на сеть универа, отчего она несколько часов пролежала не давая работать деканатам и приёмной комиссии.
  • Какой ЯП выбрать как дополнение к php - Go или Python?

    trapwalker
    @trapwalker
    MVP_Master, ну то, что я наблюдаю вокруг - это работы всегда и гораздо больше, чем времени. Можно даже выбирать.
  • Почему при объеденении второй запрос отрабатывает некорректно?

    trapwalker
    @trapwalker
    Ну да, всё, конечно, зависит от жидаемых объёмов таблиц.
    По мне так весма сомнительная оптимизация -выносить удаленные подписки в отдельную таблицу. Не пришлось бы делать два джойна, а дополнительные индексы не проблема.
  • Почему при объеденении второй запрос отрабатывает некорректно?

    trapwalker
    @trapwalker
    Вот так:
    SELECT
        c.id,
        (SELECT Count(s.email) FROM subscribers s WHERE 
            c.id = s.campaigns_id And s.created_on between '2020-10-15' and '2020-11-01'
        ) +
        (SELECT Count(cd.email) FROM subscribers_deleted cd WHERE
            c.id = cd.campaigns_id And cd.created_on between '2020-10-15' and '2020-11-01'
        ) as summ
    From campaigns c
  • Как найти все возможные комбинации переменных в python?

    trapwalker
    @trapwalker Куратор тега Python
    Попробуйте редставить что окружающие не слышат ваших мыслей.
    Как они поймут о каких комбинациях, о каких ответах и заданиях у вас тут идет речь?
    В вашем коде в i вы записываете совсем другое, вы это понимаете?
    Что вы хотите комбинировать? Где тут у вас какие задания?
    Приведите пример что вы ожидаете получить.
  • Какова оптимальная структура конфигурации Django?

    trapwalker
    @trapwalker
    в любой момент можно сменить формат настроек

    mkone112, Зачем делать это в любой момент? Настройки - это не основная функциональность проекта, сделал один раз удобно, настроил CI/CD и живи с этим. Зачем менять каждый день форматы? Погоня за модой?
    Мне тоже нравится томл и ваш вариант хранения настроек выглядит симпатично и понятно, тут нет вопросов. Как только вы такое без лишних вопросов можете сделать, у вас, обычно отпадают вопросы "как сделать правильно". Вы уже сами для себя можете определять.
    В джано же и так полно магии, куча новичков приходит и им хочется ясности и понятности хотя бы в настройках. Без лишего порога, так сказать.

    Лично я делал очень по-разному настройки. И универсальные арг-парсеры применял, которые иерархически вычитывают настройки из всех мест (командная строка, env, куча файлов с настройками, дефолты, файлы с дефолтами...)
    Это нормально работает, но по факту избыточно. Больше всего с проектом работает разработчик, а значит из коробки, ИМХО, должно работать всё именно у него, у разработчика. Тестовое окружение.
    Каждый может положить себе локальный файл настроек, который перекроет параметры основного и этот файл должен игнориться системой контроля версий.
    Хорошим тоном, также, является пример локального файла настроек, где закомментированные указаны опии, которые обычно может понадобиться поменять разработчику для своих локальных нужд. К примеру, завернуть бэк на локальную тестовую БД, подключить какие-то локальные или общие корпоративные тестовые сервисы... Кому-тонадо. кому-то нет, но долго разбираться не надо, всё в минимальном варианте должно раотать. чтобы уменьшить лаг онбординга новичков.

    В проде обычно настройки лежат в env-файле и суются через докер-кмпоз. Как там куберы настраивают - это отдельная магия=)
  • Какой ЯП выбрать как дополнение к php - Go или Python?

    trapwalker
    @trapwalker
    Евгений Самсонов, если у вас всего лишь 4-кратное повышение производительности перевесило необходимость полного переписывания проекта на совершенно другом стеке, то это, может быть, вполне оправдано. Ну бывает такой потолок встречается.
    Однако при правильной архитектуре иногда проще (и дешевле) навалить лишних мощностей, благо они нынче дешевы и при правильном подходе их лего и быстро разворачивать.
    Опять же, четырёхратная экономия на паре VDS - то это одни бюджеты, а четырёхратная экономия на гео распределённом кластере из сотни виртуалок в разных датацентрах - это совсем другие деньги. Обычно, если у вас такие масштабы как во втором случае то вы не задаёте вопросы какой язык выбрать или не принимаете решений о смене стека.
    Всё таки переписывание большого проекта сильно дороже нескольких VDS.
  • Какой ЯП выбрать как дополнение к php - Go или Python?

    trapwalker
    @trapwalker
    Дмитрий, да вы не нервничайте, я просто высказал своё мнение. Пусть автор аккуратнее и точнее формулирует свой вопрос, а так он абстрактный, не удивительно что прилетело много абстрактных соображений.
  • Какой ЯП выбрать как дополнение к php - Go или Python?

    trapwalker
    @trapwalker
    MVP_Master,
    многопоточное обновление прайсов и обработка изображений.

    Я, конечно, не телепат, но звучит так, будто вы не очень понимаете суть микросервисов или пытаетесь макросервисы делать.
    Обработка изображений требует SharedMemory? Задержка обработки каждого изображения настолько критична, что вы готовы усложнять код парралельной обработкой отдельных участков одного изображения в разных потоках? Я понимаю, если вы реализуете своеобрахный "фотошоп" с тонким клентом, где гигапиксельные панорамы польоватль обрабатывает фильтрами и хочет как можно ыстрее видеть результат в реальном времени. Тут действительно нужен параллелизм и многопоточность. Для обычно йобработки катинок, врое вотермаркинга и ресайзинга вам нужен брокер очереди задач и масштабируемое количество простых однопоточых воркеров в отдельных процессах. Воркеров может запускать кубернет в количествах. которые требуются на текущий момент и не более. Ночью, скажем, вы вовсе освободите ресурсы и сэкономите, а при наплыве загрузок сможете мгновенно и многократно увеличить производительность своего кластера.
    обновление прайсов

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

    Просто нельзя говорить "косите сено косой, только хорошо заточите ее и наймите опытного косильщика. Газонокосилка вам не поможет". Поможет же по факту.

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

    Я понимаю. что вы, наверно, не газонокосилку имели в виду, а триммер какой-нибудь, но тут ваш же пример попал в цель гораздо точнее, чем вы сами задумали, но диаметрально обратным способом.

    Если вы сделаете на Го микросервис, который в много потоков будет грузить и изолированно ретушировать много фоток за раз, то это будет ошибкой. Такой "микросервис" будет излишне сложен для своей функциональности. он будет трудномасштабируем и его сложнее будет поддерживать, диагностировать, мониторить...
  • Какой ЯП выбрать как дополнение к php - Go или Python?

    trapwalker
    @trapwalker
    MVP_Master, звучит как ошибка. Как попытка закидать шапками обрушенный мост. Обычно проблема не в скорсти языка. а в неправильной архитектуре. Я уж еговорил про кэширование, использоание статики где это возможно. про уровни изоляции, про горизонтальное масштабирование. Если переход на другой язык у вас мотивирован лишь скоростью абстрактных вычислений на нем, то вам не поможет ни один из этих языков, проблема глубже.
  • Какой ЯП выбрать как дополнение к php - Go или Python?

    trapwalker
    @trapwalker
    Спасибо кэп, но именно это я и имел ввиду.

    Дмитрий, не благодарите.

    На самом деле топикстартеру следовало бы ответить, что не важно что он там освоит и в каком порядке после ПХП: питон, го или js. Хороший специалист в любой из этих областей без работы сидеть не будет и на хлеб с маслом заработает. А вот плохой специалист освоив что угодно не сможет этим эффективно пользоваться.
    Так что иучать нужно то и в том порядке, что и к чему лежит душа и есть интерес.
  • Какой ЯП выбрать как дополнение к php - Go или Python?

    trapwalker
    @trapwalker
    Евгений Самсонов,
    Менять шило на мыло (PHP на Python), думаю, нет резона.

    Как это нет?! Слышали поговорку про "шило в жопе"? Вот про мыло в этом ключе обычно не говорят.
    Как можно вообще сравнивать взрослый настоящий язык с пхп?=)
  • Какой ЯП выбрать как дополнение к php - Go или Python?

    trapwalker
    @trapwalker
    Причем здесь конкретная задача? Если обрабатываются большие объемы данных или множество запросов, как в случае с авито, то поддержка параллелизма может заметно убыстрять работу приложения относительно языков без данной поддержки.

    Дмитрий, очень даже "при чем"
    Без мозгов, как выразился ThunderCat, параллелизм может как убыстрить, так и замедлить что угодно.
    Параллелизм бывает разный и его действительно нужно использовать с умом. На абстрактном уровне это утверждение бессмысленно. Особенно смешно звучат рассуждения о том, что Го заточен на параллелизм, а питон нет.

    Скорость бывает разная и нагрузки тоже. Обработка больших объёмов данных - это, по-вашему, что? Переконвертирование, вотремаркинг, пережатие, картинок, поиск и замазывание автомобильных номеров на них - это подпадает под большие объёмы данных, но для решения этих задач не требуется мультитрединга. Нам не критична скорость обработки каждой картинки, важно просто успевать обрабатывать их все в приемлемые сроки. В этом случае питон удобнее за счет кучи полезных библиотек (в том числе для ML), за счет простоты и прозрачности кода, за счет большого количества относительно недорогих специалистов, которых вы можете позвать себе в проект. Тот факт, что питон медленнее в числодробительных алгоритмах тут роли практически не играет, поскольку мы можем очередь задач растянуть по времени и по числу инстансов.

    Вот игровой движок для мультиплеерной RTS, наверно, эффективнее было бы писать действительно на го.
    В любом случае всякая эта бигдата и низкие задержки решаются в основном не за счет языка, а за счет продуманной архтектуры, где (привет, ThunderCat), грамотно применены очереди, горизонтальное и вертикальное масштабирование, правильные БД, правильные уровни изоляции, своевременная подготовка данных, кэширование, рендер и раздача статики где это возможно.
    Язык, по сранению с перечисленными мерами. не сделает вам ольшого выигрыша в производительности, за его счет вы сможете добить лишь каие-то проценты производительности там, где более дешевые, простые и быстрые архитектурные способы уже применены.
  • Парсинг на python, в чём ошибка?

    trapwalker
    @trapwalker Куратор тега Python
    Сергей Горностаев, поправьте, пожалуйста, ответ, если не сложно. А-то как-то неловко выйдет перед пользователями=)
    То, что автор вопроса пишет в текстовый файл байты коненчо, проблема, но не первая в этом случае.
  • Парсинг на python, в чём ошибка?

    trapwalker
    @trapwalker Куратор тега Python
    Сергей Горностаев, при всём уважении, ваша приписка только собьёт с толку.
    По-большому счету нет разницы в какой кодировке приходят данные. Атрибут text - это уже декодированное тело http-ответа. Важно только смогут ли быть преобразованы все имеющиеся символы в целевую кодировку. В данном сучае очевидно, что не смогут, поскольку главная страница яндекса в utf-8 и мы уже выяснили из трейсбэка, что там есть непредставимые в 1251 символы.
  • Парсинг на python, в чём ошибка?

    trapwalker
    @trapwalker Куратор тега Python
    Но ошибка произошла раньше, когда автор вопроса попытался закодировать неподдерживаемый в cp1251 символ никода. Следовало бы использовать utf-8
  • LoRaWan - возможно ли бюджетное отслеживание перемещений спортсменов?

    trapwalker
    @trapwalker
    vasyaabr, может стоит тогда смотреть в сторону DMR-радио? Поискать недорогие станции типа баофенга с GPS на борту и заставить их пулять каждую минуту в эфир короткий пакет с координатами.
    Заодно и средство аварийной связи для участников, мало ли ногу кто сломает.

    На высотах разместить ретрансляторы. Вот попался интересный опенсорсный проект на базе RPi. Не углублялся в тему DMR, поэтому неуверен, что оно применимо в вашей задаче.

    На чекпоинтах сигнализацию и регистрацию можно решать отдельно, например, iBeacon'ами.
    Ну и для всяких спорных случаев участникам можно раздать амые дешевые GPS-логгеры в качестве черных ящиков, которые отдельно и независимо пишут бэкап трека каждого частника,а доступен он будет только по факту сдачи на финише.