• Как войти в "ИИ"?

    LaRN
    @LaRN
    Senior Developer
    Могу вот такой курс посоветовать.
    https://stepik.org/course/50352

    Тут и теория и практика и бесплатно.
    Правда тут больше матан чем программирование.
    Ответ написан
  • Перебор таблиц в sqlite3 PyQt5 setQuery на python?

    LaRN
    @LaRN
    Senior Developer
    Список названий таблиц можно получить так:
    import sqlite3
    
    con = sqlite3.connect(r'C:\Users\asus\PycharmProjects\YKR\YKR\reports_db.sqlite')
    cur = con.cursor()
    
    line_for_search = '1'
    for tablename in cur.execute("select name from sqlite_master where type = 'table'"):
        print('SELECT * FROM {} WHERE Line="{}"'.format(tablename[0], line_for_search))
    Ответ написан
    2 комментария
  • Как исправить ошибку ''FileNotFoundError''?

    LaRN
    @LaRN
    Senior Developer
    Посмотрите что у вас в переменных начиталось my_dir и path_out

    print(path_out)
    print(my_dir)

    Вы используете переменную __file__, а там содержится не только путь до исполняемого файла, но и имя этого файла.
    Ответ написан
    1 комментарий
  • Как сделать, чтобы числа в списке при вычитании уходили за 0?

    LaRN
    @LaRN
    Senior Developer
    Вас похоже вот это условие не пускает:
    if maxs - step >= 0:
    maxs начитывается из colors, а colors содержит buf (colors[i] = buf[i]) или 0.
    Т.е. значения в colors не дают увести в минус значения в buf.
    Ответ написан
  • Как эффективней рассчитать время работы с учетом выходных и праздников?

    LaRN
    @LaRN
    Senior Developer
    Можно сохранить в таблице БД все рабочие дни текущего года и далее простым запросом получать количество дней между двумя датами.
    Select count(1) from tDate where Date between DateStart and DateEnd

    Вариант с БД хорош тем, что не придется каждый раз менять код для случая, когда от года к году есть изменения в количестве нерабочих дней и не будет сложностей с вычислением количества дней в месяцах (28 или 29, 30 или 31)
    Т.е. расчет предельно прозрачный.
    Ответ написан
    Комментировать
  • Две проверки в Sqlite3 Python?

    LaRN
    @LaRN
    Senior Developer
    Возможно причина в том, что вы пропустили литеру f перед строкой с текстом запроса на удаление.
    "DELETE FROM ranks WHERE name = {name}"
    Чтобы в строку подставилось значение переменной нужно
    f"DELETE FROM ranks WHERE name = {name}"
    Ответ написан
    Комментировать
  • Как вывести метки в радиусе 10 метров от меня?

    LaRN
    @LaRN
    Senior Developer
    Может воспользоваться формулами на подобии тех что описаны тут:
    https://mapgroup.com.ua/glavnaya/astronomicheskie-...

    По идее если у вас небольшой разброс точек по расстоянию, то формулы можно упростить. Т.е. условно можно вычислить координаты краевых значений квадрата в который должны входить точки и далее сделать селект по этим координатам из таблицы.
    Ответ написан
    Комментировать
  • Как правильно исключить пользователя из запроса?

    LaRN
    @LaRN
    Senior Developer
    Попробуйте так:
    select e.mark, course, g.name, s.name, lastname, surname, p.name, f.name from students s
    left join groupa g on s.group_id = g.id
    inner join exam_mark e on s.id = e.student_id
    inner join peciality p on g.peciality_id = p.id
    inner join facult f on p.facult_id = f.id
    where e.mark >= 4
        and not exists (select 1 
                                   from exam_mark e1
                                 where e1.student_id = s.id
                                     and e1.mark        <> 2)
    Ответ написан
    2 комментария
  • Как переделать этот запрос с применением JOIN?

    LaRN
    @LaRN
    Senior Developer
    Можно попробовать конструкцию EXISTS.
    Как-то так:
    SELECT
        tt.`email`,
        COUNT(tt.`email`) AS `count`
      FROM
        `e_stat` AS tt
      WHERE NOT EXISTS (
          SELECT 1
            FROM `e_stat`
            JOIN `pb`
              ON `pb`.`e_stat_id`  = `e_stat`.`id`
           WHERE `e_stat`.`msg`   = '68'
             AND `e_stat`.`email` =  tt.`email`) 
           GROUP BY tt.`email`
    Ответ написан
    Комментировать
  • Почему не работает ввод с консоли Java?

    LaRN
    @LaRN
    Senior Developer
    Если используете класс Scanner, то для считывания чисел из потока удобнее использовать пару методов hasNextInt и nextInt.

    Возможно в вашем случае первый вызов scanner.nextLine() вычитал весь поток и при втором вызове вернулась пустая строка.
    Ответ написан
    Комментировать
  • Как уменьшить нагрузку на Mysql запрос на очень нагруженной базе?

    LaRN
    @LaRN
    Senior Developer
    Можно попробовать сделать небольшую нормализации, например перенести из таблицы task три поля ( type, provider, cat ) в отдельную таблицу tasktype, а в исходной таблице оставить только одно поле tasktypeID и это поле поместить в индекс таблицы task вместо предыдущих трех.
    Т.к. у вас запросе условия указаты статичными, то можно вначале наиграть tasktypeID по таблице tasktype, которая не должна быть очень большой и затем идти в индекс от task по двум полям вместо четырёх. Кроме этого индекс в task станет меньше места занимать и это должно ускорить поиск по индексу и его перестраивание при добавлении новых строк.
    Ответ написан
  • Как уменьшить время выполнения программы?

    LaRN
    @LaRN
    Senior Developer
    Если нужна только первая пара, то не нужно цикцы крутить до конца. Прерывайте их как только в первый раз сработает if (a[i] + b[j] > w)
    Ответ написан
    Комментировать
  • Почему кидает ошибку?

    LaRN
    @LaRN
    Senior Developer
    Возможно файл Номеклатура PRP-4.xlsx поврежден.
    Можно его попробовать открыть в excel и пересохранить, а затем попробовать снова ваш код.
    Ответ написан
    Комментировать
  • Линейная алгебра для компьютерного зрения?

    LaRN
    @LaRN
    Senior Developer
    В теории здесь нужно иметь скриншот стола когда он пуст и сравнивать его с текущим скриншотом. Если ракурс и освещение у скринов одинаковые, то дельта двух скринов покажет есть что-то новое на столе или нет.
    Ответ написан
    Комментировать
  • Как лучше сохранять дату и время?

    LaRN
    @LaRN
    Senior Developer
    Если таблицы будут большими по числу записей, то любое связывание это уже минус, т.к. Join это по сути вложенный цикл и даже если во второй таблице есть индекс все равно это дороже чем один раз пройтись и отобрать записи по одной таблице, где есть поле дата.

    С точки зрения размера базы, с одной таблицей будет компактнее.

    Если требуется секционирование, то поле для секционирующей функции д.б. частью. секционируемой таблицы.
    Ответ написан
    1 комментарий
  • Генетический Алгоритм, Как правильно написать фитнес функцию?

    LaRN
    @LaRN
    Senior Developer
    У вас все параметры описаны так, что приидиальном варианте значение каждого из них будет равно 1.
    Например:
    Конфликтные пары для учителей = [0..1] (КоличествоПарКоторыеОниПреподают - КоличествоКонфликтныхПар )/КоличествоПарКоторыеОниПреподают

    КоличествоКонфликтныхПар = 0, значение параметра =1.

    В итоге вам нужно исками максимум а не минимум от вашей функции.
    Может переделать описание параметров наоборот, чтобы целевое значение стремились к 0?
    Например:
    Конфликтные пары для учителей = [0..1] КоличествоКонфликтныхПар/КоличествоПарКоторыеОниПреподают
    Ответ написан
    Комментировать
  • Существуют ли отладчики для исполняемых Java программ?

    LaRN
    @LaRN
    Senior Developer
    Про удалённую отладку вот тут можно аюпосмотреть.
    https://www.baeldung.com/java-application-remote-d...
    Ответ написан
    Комментировать
  • Как реализовать проверку четырехугольника на вырожденность в Java?

    LaRN
    @LaRN
    Senior Developer
    Четырехугольник вырожденный, если его площадь равна нулю.
    Для четырехугольника это будет выполняться если все вершины лежат на одной прямой.

    Чтобы выяснить, что вершины лежат на одной прямой можно воспользоваться скалярным произведением векторов,
    построенных на вершинах. Скалярное произведение двух параллельных векторов равно единице, это и значит в нашем случае, что вершины лежат на одной прямой.

    Например так:
    vAB.x=b.X-a.X
    vAB.y=b.Y-a.Y

    vAC.x=c.X-a.X
    vAC.y=c.Y-a.Y

    vAD.x=d.X-a.X
    vAD.y=d.Y-a.Y

    Теперь находим скалярное произведение векторов vAB*vAС и vAB*vAD, если оба равны единице, то четырехугольник вырожденный.

    Найти скалярное произведение от координат векторов можно так:
    s(v1, v2) = (v1.x*v2.x+v1.y*v2.y)/(sqrt(v1.x*v1.x+v1.y*v1.y)*sqrt(v2.x*v2.x+v2.y*v2.y))

    Либо второй вариант, можно пойти от уравнения прямой:
    (b.x-a.x)/(b.y-a.y)=(c.x-a.x)/(c.y-a.y)=(d.x-a.x)/(d.y-a.y)=t
    и тут, чтобы уйти от деления можно так переписать уравнение:
    (b.x-a.x)*(c.y-a.y) =(c.x-a.x)*(b.y-a.y)
    (b.x-a.x)*(d.y-a.y) =(d.x-a.x)*(b.y-a.y)
    Если оба равенства выполняются, то четырехугольник вырожденный
    Ответ написан
    Комментировать
  • Java, эта задача решается только через множество if?

    LaRN
    @LaRN
    Senior Developer
    Если не хочется заморачиваться на проверку границ массива можно дважды пройтись по массиву, вначале слева-направо затем наоборот.
    Первый проход от 0 элемента до array.length - 2
    включительно.
    Вот так:
    5 3 8 1
    array[i] = min([array[i], array[i+1])
    На выходе получим
    5-3 - > 3
    3-5 - > 3
    8-1 - > 1
    Второй проход от array.length - 3 до 1 включительно.
    array[i] = min([array[i], array[i+1])
    На выходе получим
    3-1 - > 1
    И на 0 индексе уже стоит число 3 его не трогаем.
    В итоге в выходной массиве в диапазоне индексов [0;array.length - 3] будет находиться ответ.
    В нашем примере ответ это подмассив [0;1]
    И там должно быть 3 1
    Ответ написан
    Комментировать
  • Почему не всегда срабатывает код?

    LaRN
    @LaRN
    Senior Developer
    Вот тут немного странно сделано:
    DB::beginTransaction();
    $waitingPayment = HistoryPayment::find($waitingPayment->id);
    if ($waitingPayment->status_transaction === 'success') {
    return false;
    }

    Открываем транзакцию, чекаем что status_transaction === 'success' и выходим не закрывая её и не откатывая. Может вынести проверку до открытия транзакции.
    Просто открытая тут транзакция может, где-то далее не явно использоваться и возможно влиять на то, что что-то потом откатывается при rollback, что не должно откатывать я.

    Есть ещё вызов
    ChangeBalance::dispatch($user->id, $user->balance);
    Он за пределами основной транзакции и не в try, может он влиять на баланс, например если внутри у него ошибка случается?
    Ответ написан