Задать вопрос
  • Температура видеокарты RTX 3070 - 81 градус при очень низком вольтаже - нормально ли?

    @Drno
    разбери и помотри. но такое впечатление что её надо обслужить
    Ответ написан
    Комментировать
  • Как переменную имеющую тип строка и содержащую координату перевести в числовой формат на php?

    Adamos
    @Adamos
    Если вам нужна строго определенная точность - забудьте про float. Для этой математики даже 0.7 - бесконечная дробь.
    Храните int, при вычислениях делите на миллион, при приведении в строку - втыкайте точку за шесть знаков до конца. Класс на три метода, написать и забыть проблему.
    Ответ написан
    Комментировать
  • Как поменять местами максимальное и минимально число в массиве?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    попробуйте представить, как оно будет работать, в замедленном режиме.
    Что, если массив не 5 чисел, а несколько миллионов, длиннющий?
    Хорошо бы его проходить только 1 раз. И по пути находить минимум и максимум, и их индексы.
    Как?
    Сначала и min и max это первое значение, а оба индекса 0.
    Далее с очередным элементом массива смотрим, больше ли он нашего "максимума"? Если да, то он становится максимумом, а текущий индекс — индексом максимума. То же с минимумом. Если меньше текущего минимума, то ...
    Прошли весь массив — ок, имеем минимум, максимум, их индексы.
    Меняем местами элементы по индексам.
    Ответ написан
    Комментировать
  • Как создать сборку для быстрого развертывания сервера с WP?

    ky0
    @ky0 Куратор тега Nginx
    Миллиардер, филантроп, патологический лгун
    1. Делаете дамп базы болванки вашего сайта и файлов WP
    2. Пишете ansible-плейбук, который:
    2.1 Настраивает все потроха ОС (устанавливает и обновляет все нужные пакеты, Докер, пользователей, создаёт каталоги и т.д).
    2.2 Устанавливает СУБД.
    2.3 Восстанавливает в СУБД ваш дамп.
    2.4 Разворачивает файлы WP в нужные каталоги.
    2.5 Запускает контейнеры с РНР, Redis и nginx.

    Всё!
    Ответ написан
    4 комментария
  • Как создать сборку для быстрого развертывания сервера с WP?

    @Drno
    Сделайте lxc контейнер и его разворачивайте. 1 раз собрали внутри него, и копируйте на новые сервера

    Ну либо докер...
    Ответ написан
    2 комментария
  • Что делать если не открывается диск D на Линукс?

    @va_k
    Нужно делать fsck. В зависимости от того какая там ФС. Если это ntfs, то чекать лучше виндой.
    Ответ написан
    Комментировать
  • Как правильно мержить в main из dev, если там есть незаконченные фичи?

    bingo347
    @bingo347
    Crazy on performance...
    Фича ветки делаем только от актуального main.
    Для проверки мержим фича-ветку в dev, но не удаляем.
    Когда одна или несколько фичей проверены и готовы, то делаем от main релизную ветку и мержим туда все готовые фичи, прогоняем тесты и если всё ок, то мержим релизную вету в main.
    Ну и полезно мержить main в фича ветки, когда main обновился.
    Ответ написан
    Комментировать
  • Как правильно мержить в main из dev, если там есть незаконченные фичи?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Решение более правильное - не делать так. Мержить надо когда все работает, а если есть неработающий функционал, то:
    - Либо комментировать функциональность которая еще не работает
    - Либо сделать эту функциональность доступной через фича-флаги. Эти флаги соответственно никто не должен выставлять
    - Либо мержить только работающие ветки, а та, в которой не работает/не закончена - в нее мержить уже готовую мастер ветку

    Мержить через cherry-pick - такое себе: одна ошибка и ты ошибся (фатально)
    Ответ написан
    Комментировать
  • Как не показывать пустые массивы?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    1) сделайте нормальные имена полям, что за rid, rname, ryavka, тут с большой буквы, там с маленькой... кроме того что половина полей транслитерацией кривой, так еще и префикс зачем то присобачили... С переменными та же фигня.
    2) База должна соответствовать 3 нормальной форме, соответственно 2 значения в поле вашей рявки быть не должно, это должны быть 2 отдельных поля (или вообще внешняя таблица, если там много значений предполагается).
    3) Соответственно в запросе нужно будет дать дополнительное условие по наличию второго поля, тогда ответ будет такой как надо.
    4) В вашем случае предполагаю что ответ вообще не приходит, или приходит пустой, так как при запросе из пустого результата в первой же итерации цикла все упадет как раз с описанной ошибкой.
    Ответ написан
    5 комментариев
  • Почему не записываются данные в MySQL базу данных?

    @rPman
    заверши транзакцию в конце скрипта перед close - commit
    p.s. в 2024 году использовать mysqli это моветон.

    использовать видео, да еще и такое зашакаленное и на неадекватном хостинге (как так, по пробелу паузу не делает) чтобы передать исходники это прямое издевательство над теми у кого ты просишь помощи.
    Ответ написан
    9 комментариев
  • Какие есть песочницы (fiddle) для NoSQL баз данных?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Redis - https://try.redis.io/
    MongoDB - https://www.humongous.io/app/playground/mongodb/new
    ClickHouse - https://play.clickhouse.com/play?user=play
    Neo4j - https://console.neo4j.org/
    ElasticSearch - https://www.elastic.co/demos

    Дополнительно - устанавливаешь докер, качаешь нужный образ, находишь сиды различных БД и играешься
    Ответ написан
    Комментировать
  • Как узнать width и height видеофайла при загрузке на сервер?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    ffmpeg
    Ответ написан
    Комментировать
  • Как лучше хранить много изображений для веб-приложения?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    Хранение файлов в бд - самый хреновый вариант из имеющихся. По многим причинам, но основная - файлы должны лежать в файловой системе. Это их естественное состояние. Это быстро, не затратно, не потребляет лишнюю память/процессор и просто удобно. В зависимости от необходимости давать к ним доступ всем или по авторизации, будет либо работа напрямую с статикой через какой-нить нжинкс, либо программно сформированный поток байт через что-то типа пхпшного readfile...

    В зависимости от возможностей хостинга, файлы хранят либо локально(в случае например собственного выделенного сервера и наличия райд стойки), либо, как уже написали, в облачных хранилищах, что чаще всего достаточно выгодно в плане денег за объем/трафик, плюс расширение хранилища будет просто отражаться на счете за услуги, а не ложиться ответственностью на вас как владельца сгоревших винтов с данными клиента. АПИ у всех весьма несложные, а драйвера для работы с удаленными файлохранилищами есть практически для всех популярных движков в виде готовых пакетов.
    Ответ написан
    3 комментария
  • Как лучше хранить много изображений для веб-приложения?

    @rPman
    Веб приложения максимально оптимизированы при работе с файлами на диске.
    Никакой другой метод не позволит дать такую производительность.

    Поэтому - авторизацию доступа делай на уровне веб сервера (вот пример с нормальным oauth)

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

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

    Тупой пример - числовой идентификатор переводи в hex, дели на группы по 4 символа и создавай соответствующие каталоги: /images/0d4f/3b00/a841/0d88, тут 0d88 это файл, остальные части - каталоги. Идентификатор соответственно 64-битное число 0x0d4f3b00a8410d88

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

    p.s. хранить большие бинарные блобы в базе данных можно только при очень большой нужде в транзакциях, и это очень дорого и по памяти и по процессору.
    Ответ написан
    2 комментария
  • Как лучше хранить много изображений для веб-приложения?

    @Drno
    в БД обычно хранится "ссылка" \ хеш на файл, а сам файл может хранится либо просто на диске в системе, либо на подключенном S3 к примеру, это уже как по деньгам \ удобству итд...
    Ответ написан
    7 комментариев
  • Взгляд опытных программмистов, что улучшить и исправить?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    1. #define SPACE ' ' - смысла не несет такая замена. Или какое-то более осмысленное имя, вроде EMPTY_FIELD, или просто в коде используйте ' '. Хотя лучше хорошее имя.

    2. check_field - ужас. Во-первых, проверки на крестики и на нолики идентичны - только сравниваете вы или с 'X' или с 'O'. Ну напишите функцию, которая принимает char и ищет тройку из этих символов. Далее, используйте циклы. 3 строки можно проверить одним и тем же кодом, только индексы сдвигаются на 3 - вот и запустите цикл на 3 итерации. Так же со столбцами. В итоге вместо 8 условий будет только 4.
    Вообще, можно до одного условия в трех вложенных циклах ужать:
    const int dx[4] = {0, 1, 1, 1};
    const int dy[4] = {1, 0, 1, -1};
    for (dir = 0; dir < 4; ++dir) {
      for (int start = 0; start < 9; ++start) {
        int step;
        int x = start % 3;
        int y = start / 3;
        for (step = 0; step < 3; ++step) {
          if (x < 0 || x > 2 || y < 0 || y > 3 || field[x+3*y] != player) break;
          x += dx[dir];
          y += dy[dir];
        }
        if (step == 3) {
          return 1;
        }
      }
    }
    return 0;


    3. print_field тоже делается циклами. Хотя бы по трем строкам.

    4. основной игровой цикл можно делать while (1), ибо по любому из значений check происходит break;
    Ответ написан
    Комментировать
  • Взгляд опытных программмистов, что улучшить и исправить?

    bingo347
    @bingo347
    Crazy on performance...
    1. Много дублирующегося кода в функции check_field.
    Можно вынести в константу массив массивов с выигрышными позициями и проверять в цикле.
    При этом позиций проверяется 7, хотя их должно быть 8.

    2. Проверку на ничью в той же check_field, можно делать ранний выход из цикла если найдена первая пустая клетка.

    3. Вынести в enum результат функции check_field, сейчас там магические числа возвращаются.

    4. Ввод имен игроков в функции game_with_people.
    Буффер на 10 байт на стеке легко переполнить и будет UB.

    5. В функции main опять повторяющийся код на вывод меню.

    6. Нет проверки на некорректный ввод в scanf.

    7. В game_with_people проверки на результат check_field можно сделать через switch case.

    8. Если игрок введет некорректную клетку, то ход уйдёт другому игроку.

    9. Можно перетереть уже занятую клетку.
    Ответ написан
    3 комментария
  • Почему выдает ошибку Apache?

    IvanU7n
    @IvanU7n
    nothing interesting here
    ошибка в том, что в VirtualHost указываются ip-адреса и/или порты, для разруливания по доменам используются как раз ServerName и ServerAlias

    т.е. не нужно пытаться запихнуть в VirtualHost доменное имя из ServerName
    Ответ написан
    Комментировать
  • Скомпилированный в GCC exe файл вылетает досрочно?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Звучит в точности как симптомы Undefined Behavior. На самом деле программа вылетает из-за, например, доступа к неправильным указателям. Но во время отладки звезды выстраиваются так, что это некорректное действие не приводит к падению программы.

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

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

    Возможно, там где-то выход за границы массива, Попробуйте еще, например, увеличить все выделенные строчки и массивы в коде раз в 10. Если после этого программа отработает, ищите, где у вас ошибка в логике - почему массивов не хватает.
    Ответ написан
    32 комментария