Задать вопрос
  • Есть ли принципиальные преимущества Intel+NVidia перед AMD+AMD?

    @rPman
    'были времена', когда продукция amd как процессоры и видеокарты от них были дешевле до 30% при равной производительности

    Так intel для своих процессоров чаще меняет сокеты, а значит апгрейд подразумевает замену не только процессора но и материнской платы, когда как у amd его socket am4 да и предыдущий am3 держались на столько долго что у некоторых материнки могут работать десятилетиями, и при этом достаточно мощный процессор и оперативная память.

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

    Вот и смотри, получается быть приверженцем amd может оказаться дешевле но можно поймать проблему не совместимости (кстати сейчас это уже не так заметно, все больше софта поддерживают gpgpu от amd, точнее opencl, а значит кроссплатформенно)

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

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Нет, ничего указывать не надо.
    Тут и без интерфейсов получатся отличные самолёты из соломы и палок.
    Ответ написан
  • Как запустить php скрипт после ajax запроса?

    @rPman
    Вопрос немного не понятен.
    * Если задача в php скрипте как то отличить обычную загрузку страницы от запроса, то к запросу нужно добавить параметры, это нормальный способ, специально для этого созданный. Параметры могут быть добавлены напрямую в ссылку, это формат запроса http get (используется по умолчанию) или как дополнительные поля запроса http post, в любом случае метод ajax jquery все делает автоматически и достаточно указать данные в settings в виде массива key->value в параметре data
    * Если проблема в том что запрос выполняется параллельно загрузки данных браузером и может быть прерван принудительно браузером или при проблемах с соединением, то типичный способ - запускать свои задачи отдельным приложением (сервисом), с которым веб приложение (то что внутри index.php) должно как то общаться (обычно используют тот же http протокол но это не обязательно, например один из способов - оставить в базе данных задачу, список которых и будет мониторить это приложение). Способов тьма, написано куча решений, особенно когда речь идет о высоконагруженных задачах, но настоятельно рекомендуется решить подобную задачу самостоятельно, благо там нет ничего сложного.
    В данном решении должно появиться понятие задачи, у которой есть статусы новая, исполняется, завершена, ошибка,... а на стороне клиента это соответственно должно обрабатываться.

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

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Читайте обе.
    Ответ написан
    2 комментария
  • Как отсортировать массив по дате в формате от и до?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) Зависит от формата даты. пример массива не помешает. так же как и вариант "такое хочу получить".
    2) Если данные получены из бд, правильным ответом будет добавить сортировку в запрос.
    Ответ написан
    21 комментарий
  • Как вернуть html код в ответ ajax запросу?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Вы уже возвращаете ответ через echo.
    Проблема в том, что вы не понимаете собственный код. Сначала вы вызываете ferchAll, а потом пытаетесь работать с результатом как с одной записью, а не их набором. Скрипт ваш падает из-за этой ошибки, а сервер не настроен для разработки и ошибки не показывает.

    PDOStatement::fetchAll() возвращает массив, содержащий все оставшиеся строки результирующего набора. Массив представляет каждую строку либо в виде массива значений одного столбца, либо в виде объекта, имена свойств которого совпадают с именами столбцов.
    https://www.php.net/manual/ru/pdostatement.fetchall.php

    P.S. И это если игнорировать неправильные кавычки.
    Ответ написан
    Комментировать
  • Как вернуть html код в ответ ajax запросу?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Вы пытаетесь выполнить внешнюю команду с именем <div
    Изучайте синтаксис PHP. Посмотрите, чем обратные апострофы отличаются от прямых и от двойных.
    Ответ написан
    Комментировать
  • Как в Laravel после регистрации/авторизации оставаться на той же странице?

    iMedved2009
    @iMedved2009
    Не люблю людей
    return redirect()->back();
    А на роуты login и register просто повесить миддлваре аля guest который будет редиректить куда надо.
    Ответ написан
    2 комментария
  • Как скомпилировать хоть 1 проект с гитхаба на с/с++?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега C
    Седой и строгий
    Судя по ридмихе, нужно просто уметь пользоваться gcc и make.
    Ответ написан
    Комментировать
  • Как обновить git для windows?

    Krasnodar_etc
    @Krasnodar_etc
    fundraiseup
    Download and install Git for Windows 2.37.2(2) [N/y]?

    Вас спрашивают, хотите ли вы установить новую версию? Нажмите "y" (от yes) и enter
    Ответ написан
    3 комментария
  • Какую IDE выбрать для разработки на Java?

    xez
    @xez Куратор тега Java
    TL Junior Roo
    https://www.jetbrains.com/idea/
    CE подойдет
    Ответ написан
    Комментировать
  • Зачем задавать приватный модификатор доступа для свойств класса?

    Adamos
    @Adamos
    class VeryOpenOne
    {
    public $property;
    }
    $voo = new VeryOpenOne();
    $name = 'pro' . 'perty';
    $voo->$name = 'Пытаясь отрефакторить тот класс, ' .
      'ты хрен найдешь, что в этой строчке меняется эта переменная. ' .
      'Никакое самое умное IDE не поможет';
    Ответ написан
    1 комментарий
  • Зачем задавать приватный модификатор доступа для свойств класса?

    Maksclub
    @Maksclub Куратор тега PHP
    maksfedorov.ru
    У вас очень логичный вопрос на счет сеттера: сеттер полностью уничтожает задумку с инкапсуляцией. Правильно это называется "семантическое нарушение инкапсуляции" — то есть как-бы мы инкапсулировали, но по факту назад открыли прямую запись в свойство напрямую. Все доводы "ну мы можем в сеттере валидировать" не корректны

    Правильным способом будет не использовать сеттеры. Вот моя статья на эту тему:
    https://habr.com/ru/post/469323/

    Более подробно: каждый класс нужно проектирвовать так, чтобы данные внутри были максимально связаны. Например каждый метод работать должен в хорошем случае с максимальным числом полей класса, тогда у него высокий cohesion... В тоже время снаружи наужно работать с максимальн омалым числом метода, тогда будет низкая связанность (coupling). Это пара принципов из GRASP.
    Когда вы делаете сеттеры и геттеры, то у вас данные внутри между собой почти никак не взаимодействут: с геттером работают снаружи, с сеттером работаю снаружи — весь класс нараспашку, а в нем в 100% случаев появляются данные, которые вместе не должны находиться и никак не связаны — анрушена и абстракция и инвариант и много чего еще...

    Про инвариант отдельно: например есть платеж, у него есть значение, с которым платеж инициирвоан (initValue), есть значение холда (holdAmount) и есть значение чарджа на списание (chargeAmount)
    Когда вы работаете с платежом, контролируя ивнариант в самом классе, то ваш каждый метод првоеряет др значения и позволяет перейти к др состоянию... методов будет 2-3, все инкапсулировано и безопасно.

    Например:
    class Payment {
         pub func charge(amount int) void {
              if (this.holdAmount < amount && this.initAmount < amount) {
                   throw new PaymentException('Unavailable charge amount')
              }
    
               if (this.status === PaymentStatus:finish) {
                   throw new PaymentException('Payment already fisnished')
              }
    
              this.chargeAmount = amount
              this.holdAmount -= amount
              this.status = PaymentStatus:finish
         }
    }


    Тут в одном методе полные проверки и класс сам контролирует все состояние внутри, также соблюдается закон Деметры. У даннго кода высокий cohesion (из GRASP), тк внутри идет плотная работа с внутр данными (значит они корректно тут закроекны) и низкий coupling ( с теми данными для данного кейса только один метод работы, все внутри)

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

    DevMan
    @DevMan
    лучше бы вам в голову пришло не пользоваться для этого регулярками, а нормальными инструментами: DOM и xpath.
    Ответ написан
    Комментировать
  • Как улучшить код, который проверяет наличие элемента в массиве и его значение?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Моя задача такова, хочу проверить, существует ли данный ключ в массиве


    Для этой проверки нужно использовать функцию array_key_exists

    Потому что

    $array = ['key' => null]
    isset($array['key']) // false
    array_key_exists('key', $array); // true
    Ответ написан
    2 комментария
  • Как спроектировать базу данных с расписанием?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    --пользователь (userId, username, group, year)
    Уже лажа, так как группы у вас отдельные сущности, со своими свойствами, группы будут связаны с пользователями через пивот таблицу, так как наверняка будут пользователи, входящие в разные группы.
    --курсы (интовое значение)
    Курс - это сущность. Какое интовое значение?
    --группы (количество групп напрямую зависит от курса)
    Ваще до ручки сколько и что от чего зависит. Группы так же связанны таблицей отношений с курсами, как с юзерами. Отдельный пивот.
    --дата проведения занятия
    Собсно таблица расписаний дата/начало/конец/айди группы/айди предмета/кабинет.
    В зависимости от нюансов, которых я не знаю, таблицы могут быть с меньшим отношением, например не многие ко многим, а один ко многим, что немного меняет структуру, но в целом смысл останется примерно тот же.
    Ответ написан
    5 комментариев
  • Как mysql/mariadb сортирует одинаковые значения?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В программировании различают понятие стабильная сортировка (stable sort) когда подряд идущие одинаковые ключи в массиве при сортировке также идут в той-же последвательности со значениями. Но это работает только для массивов.

    Реляционная алгебра не определяет никаких массивов. Собственно мы не знаем порядка как хранятся кортежи в таблице. Более того. Оптимизация пространства в БД может их тасовать как колоду карт. Тот-же вакуум в Постгресе. Или работа пакетов DBMS_SPACE для Oracle. Или любое delete+insert может сломать порядок который был раньше.

    Поэтому применительно к БД такой вопрос лишен смысла. Если вам нужен какой-то дополнительный ранг сортировки - вводите новое поле (sequence_num) и сортируйте по field,sequence_num. Тогда будет порядок.
    Ответ написан
    Комментировать
  • Почему лагает, глючит жесткий диск?

    @VT100
    Embedded hardware & software.
    Возможные ответы для тэга "железо":
    • Дрянной SATA-кабель?
    • Блок питания "устал"?
    • "Южник" (SATA-порты) "отваливается"?
    Ответ написан
    Комментировать
  • Как отсеять сгенерированные email?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    2yiwuei3827ryifg2i28ftiwegfi@yandex.ru или такие vladimir_saveliev_98@mail.ru, natalia_blohina_93@list.ru
    А с чего вдруг их не принимать? Они валидны и соответствуют RFC. Какой смысл их удалять? Или точнее, какой смысл удалять работающие емайлы? Вам не пофиг как выглядит емайл, если он рабочий? Или есть какой-то особый смысл в красивых емайлах?
    Ответ написан
    4 комментария