• Как правильно взаимодействовать с БД при многопоточности?

    LaRN
    @LaRN
    Senior Developer
    Про суть ошибки написано тут https://habrahabr.ru/post/21326/ или тут www.mysql.ru/docs/man/Commands_out_of_sync.html

    Не ясно как реализован ваш класс доступа к БД. Но если все воркеры идут через один общий коннект, то тогда по ссылкам указано что происходит. По хорошему каждый воркер должен открывать свой коннект к БД.
    Ответ написан
    2 комментария
  • Как вы обходитесь без ORM?

    LaRN
    @LaRN
    Senior Developer
    Если нагрузка на БД не большая и структура БД простая, то ORM подойдёт. Но если много таблиц большого размера(миллионы записей) и требуется строить отчетность, то ORM уже не потянет.
    Нужно руками строить запросы и анализировать план выполнения, чтобы выжать максимум. Обратная сторона - если нужно поддерживать несколько платформ, то писать запросы придётся для каждой платформы с учетом особенностей синтаксиса.
    Ответ написан
    Комментировать
  • Каким должен быть запрос?

    LaRN
    @LaRN
    Senior Developer
    У вас зажимка на список виртуальных чатов и она отсекает общие.
    Можно это условие:
    WHERE c.virtual_id IN ('ind_4_9', 'ind_4_20', 'ind_4_32')
    Изменить как-то так:
    WHERE (c.virtual_id IN ('ind_4_9', 'ind_4_20', 'ind_4_32') or c.type in (all, all_teachers, all_students))
    Ответ написан
  • Как реализовать сложения последовательности бит по модулю 2^32?

    LaRN
    @LaRN
    Senior Developer
    c = (a+b)%4294967296
    Ответ написан
    Комментировать
  • Как можно получить текст между двух символов новой строки?

    LaRN
    @LaRN
    Senior Developer
    Можно без регулярок, например так:

    '\nMonster car\n\n50dol\n\n'.split('\n')[1]

    или так:

    s = '\nMonster car\n\n50dol\n\n'
    l = s.split('\n')
    print(l[1])
    Ответ написан
    Комментировать
  • Как синхронизировать потоки в Java?

    LaRN
    @LaRN
    Senior Developer
    Похожий вопрос разбирали вот тут.
    Чем отличается семафор, мьютекс и монитор? Или это одно и тоже?

    И более подробно здесь
    https://habrahabr.ru/post/277669/
    Ответ написан
    Комментировать
  • Как покрыть полигон прямыми?

    LaRN
    @LaRN
    Senior Developer
    Не нужно рисовать сразу все прямые.
    Нужно найти на указанном контуре две точки, наиболее удаленные друг от друга.
    Далее рисовать линии разметки перпендикулярно линии проведенной через найденные выше две точки.
    Так как точки наиболее удаленные (условно самая длинная хорда), количество линий разметки будет максимальным.

    Для поиска наиболее удаленных точек, можно по координатам точек образующих контур вычислить геометрический центр масс фигуры и затем найти точки контура наиболее удаленные от нет по формуле Евклида.
    Далее для каждой найденной точки строим луч из текущей точки через геометрический центр масс и ищем точку пересечения этого луча с контуром.
    Исходная точка контура и найденная путем трассировки луча образуют отрезок, нужно найти и запомнить длину отрезка.
    После этого имеем массив отрезков с длина, нужно выбрать самый длинный (или один из самых длинных, если есть несколько равных по длине).
    Найденный отрезок и будет проходить через наиболее удаленные точки контура и перпендикулярно ему нужно строить линии разметки.
    Ответ написан
    Комментировать
  • Как найти число которое будет делиться без остатка на все элементы массива?

    LaRN
    @LaRN
    Senior Developer
    Я бы вначале отсортировал массив чисел по возрастанию.

    Зачем для каждого элемента массива проверил бы, а нет ли в массиве числа большего чем данное (для этого сортировал массив, чтобы не перебирать каждый раз все элементы массива - это экономит время), которое делиться на данное, и если такое число есть, то текущее выбрасываем, т. к. оно уже входит в состав большего числа.
    (Например в приведенном массиве есть число 3 и есть число 300, 3 можно выкинуть, т.к. 300 делится на 3.)

    Зачем оставшиеся числа перемножаем (исключая дубли, если они будут).
    (это позволит уменьшить количество чисел и тем самым избежать переполнения типа unsigned long на длинных массивах)

    Если такой вариант не сработает, а это возможно (например очень длинный массив), то есть вариант посложнее:
    Каждый элемент массива представляем как произведение простых чисел
    и все уникальные простые числа складываем в словарь, где ключ - это простое число, а значение - это максимальная степень в которой данное простое число входит в элементы исходного массива.

    Например: есть число 100500 = 2*2*3*5*5*5*67, тогда словарь будет такой
    {2: 2, 3: 1, 5: 3, 67:1}

    После перебора всех элементов исходного массива будем иметь словарь простых чисел и их максимальных степеней.
    Для получения результата берем и перемножаем все ключи словаря возведенные в степень значения соответствующего из ключей, это даст наименьшее число, которое делиться на все элементы исходного массива.
    Ответ написан
    Комментировать
  • Некорректно работает setTimeout )) Почему?

    LaRN
    @LaRN
    Senior Developer
    Вот тут описание. Полной победы не будет.
    https://learn.javascript.ru/settimeout-setinterval
    Ответ написан
    Комментировать
  • Почему выдает ошибку при использовании find()?

    LaRN
    @LaRN
    Senior Developer
    Похожую ошибку разбирали вот тут:
    https://stackoverflow.com/questions/21129020/how-t...

    Как решение предложили установить кодировку по умолчанию:
    import sys

    reload(sys)
    sys.setdefaultencoding('utf8')
    Ответ написан
    Комментировать
  • Почему поиск уникальных значений в двух таблицах Excel работает медленно и как сделать чтобы было быстрее?

    LaRN
    @LaRN
    Senior Developer
    А ключи отсортированы?
    Десятки минут даже для Excel как-то медленно.
    Это как будто для каждого ключа одного файла пробегать все ключи другого.
    Если взять два отсортированных списка и пройтись по ним, то недостающие ключи можно за один проход найти - это секунды для 100000 записей.
    Ответ написан
    Комментировать
  • Как скопировать поля с одной таблицы в другую?

    LaRN
    @LaRN
    Senior Developer
    Попроуйте такой запрос:

    UPDATE recording
    SET recording.videoId. = video.videoId
    SET recording.default = video.default
    SET recording.medium = video.medium
    SET recording.high = video.high
    FROM video
    JOIN recording
    ON recording.id = video.recordingId

    Перед запуском update можно сделать проверочный запрос, вот такой:

    Select
    recording.videoId, video.videoId
    recording.default, video.default
    recording.medium, video.medium
    recording.high, video.high
    FROM video
    JOIN recording
    ON recording.id = video.recordingId

    Запрос покажет какие записи отобрались для апдейта.

    Насчёт varchar: varchar хранит столько символов сколь реально передано, а char столько, сколько указано в описании поля.
    Ответ написан
    Комментировать
  • C#. Как минимизировать функцию, в которой присутствуют суммы?

    LaRN
    @LaRN
    Senior Developer
    Судя по виду функции ваша задача распадается на три более простых.
    Т. к. в функции есть три блока сумм и в каждом блоке сумм суммируемые значения идут в четной степени (степень = 2), то значение каждой из сумм строго положительно.
    А раз так то минимизируйте каждую из сумм по отдельности.

    Теперь если взять каждую из сумм по отдельности, видно что для минимизации значения коэффициентов С не важны, минимизировать нужно результат выражения в скобках.
    Если взять выражение в скобках, то для него минимум будет для случая, когда
    a(i)=x(i), b(j)=x(j), d(k)=x(k), т.е. для тех a(i), b(j), d(k), которые попадают в диапазон x min<=x<=x max, значение
    скобки будет минимальным и равным нулю.

    По остальным значениям, функция вида (а/х)^2 не имеет экстремумов, это значит, что она принимает максимальное и минимальное значение на границе диапазона x min<=x<=x max, т.е. либо для х =x min, либо для
    х = x max.
    Ответ написан
    Комментировать
  • Как считать тепловую карту удалённости от дорог в городе?

    LaRN
    @LaRN
    Senior Developer
    Все зависит от точности, которую вы хотите получить.
    Скорее всего вам нужно учитывать не только удаленность от дорог, но и загруженность дороги, т.е. условно есть МКАД от которого лучше жить километрах в 7 или маленькая дорога на въезде в микрорайон для которой и 50 м нормальное удаление. Также если на определенных участках дорог периодически случаются мощные пробки, то влияние такой дороги будет намного сильнее чем у просто загруженной магистрали.

    Кроме этого на втором этапе вам возможно захочется учитывать факт того, что если между дорогой и расчетной точкой есть естественные или искусственные препятствия, то влияние дороги на эту точку снижается исходя из типа препятствия.

    Я бы попробовал так:
    Если сравнить дорогу с проводником тока и загруженность дороги сравнить с силой тока, то можно попробовать воспользоваться вот этими формулами:
    https://www.chem-astu.ru/chair/study/physics-part2...
    Нужно только подобрать коэффициенты формулы исходя из условий вашей задачи.

    Условную силу тока определять из указанных выше факторов.
    Ответ написан
    Комментировать
  • Как синхронизировать игроков в браузерной пошаговой игре?

    LaRN
    @LaRN
    Senior Developer
    Можно сделать наоборот. Не использовать таймер обратного отсчёта, но в момент начала хода рассчитать время его окончания и сравнивать по таймеру текущее время с рассчитанным. Как только рассчитанное время наступило спросить у сервера текущее состояние игры. Такой вариант позволит сгладить фризы таймера на клиенте.
    Ответ написан
  • Почему запрос к бд возвращает ошибку?

    LaRN
    @LaRN
    Senior Developer
    Зачем в этом запросе используется поле id, оно же всегда null, может так переписать:

    $sql = mysql_query("INSERT INTO User ('name', 'surname') VALUES ('".$name."', '".$surname."')");
    Ответ написан
    Комментировать
  • Адаптивная аутентификация баесовым методом?

    LaRN
    @LaRN
    Senior Developer
    А нужен ли тут IP вообще?
    Что является мерой необычности IP?
    Ответ написан
  • FOR счетчик в Python?

    LaRN
    @LaRN
    Senior Developer
    Потому что после первой итерации сразу return. Чтобы поправить сместите выравнивание у return аналогично тому как сделано у for
    Ответ написан
    1 комментарий
  • Как сделать рандомный вывод текста по id из SQLite?

    LaRN
    @LaRN
    Senior Developer
    Можно вот так попробовать:
    1 получаем максимальный идентификатор из таблицы, например таким запросом:
    SELECT max(Id) FROM mysovet
    2 получаем случайное число из интервала от 0 до числа полученного в п.1.
    3 получаем запись из бд например таким запросом:
    Select max(Id) FROM mysovet where Id <= число полученное в п.2.
    Ответ написан
    Комментировать
  • Нужен фреймворк для работы с win окнами?

    LaRN
    @LaRN
    Senior Developer
    Есть вот такая статья:
    https://habrahabr.ru/post/346258/
    Там описан инструмент для вашей задачи.
    Ответ написан
    Комментировать